关于输入一组数据求最小的问题
2014-07-29 15:14
253 查看
问题链接:
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1350
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1408
两个问题,自己第一个代码是没有敲出来的,第二个代码虽然是搞定了,
但是在处理是分析不清楚,使用了两个for循环,导致时间上相对于别人的代码有很大的差距。
自己AC的1408:
View Code
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1350
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1408
两个问题,自己第一个代码是没有敲出来的,第二个代码虽然是搞定了,
但是在处理是分析不清楚,使用了两个for循环,导致时间上相对于别人的代码有很大的差距。
自己AC的1408:
#include<iostream> #include<cstdio> #define M 100100 using namespace std; int num[M],Max[M],Min[M]; //这个Max我不打算要了 int max(int a,int b) { return a>b?a:b; } int main() { int T,n,D; long long ans; cin>>T; while(T--){ ans=0; cin>>n>>D; for(int i=0;i<n;i++) cin>>num[i]; //原来开始所有的结果都是保存在num这个数组当中 Max[0]=num[0]; //第一个 for(int i=1;i<n;i++) { if(Max[i-1]-num[i]>D) //当结果是大于的时候,是不符合题目的要求的。 //直接让最大值返回,到Max数组,然后后面的数量关系会自动的调整好的 Max[i]=Max[i-1]-D; else Max[i]=num[i]; } //处理一次最大值,还要处理一次最小值,虽然还没有理解原因。 Min[n-1]=num[n-1]; for(int i=n-2;i>=0;i--) { if(Min[i+1]-num[i]>D) Min[i]=Min[i+1]-D; else Min[i]=num[i]; } for(int i=0;i<n;i++) ans+=(max(Min[i],Max[i])-num[i]); //ans+=Min[i]-num[i]; //没看懂,取两个的最大值,然后和num[i]作差。 //然后不断的将结果返回到ans。什么情况? cout<<ans<<endl; } return 0; }
View Code
相关文章推荐
- 关于多组数据连续输入,求最大值最小值问题
- 众数问题(为什么只能输入一组数据,不能输入m组数据)
- 关于C++/C 输入一行整型数据,数量不定问题,如何读入
- 关于mysql数据库中数据输入问题
- 关于用连续用多个scanf函数输入数据时前面的scanf函数会在缓冲区留下回车符的问题
- 关于数据输入的问题
- 关于测试数据的输入问题
- 关于在asp.net中使用showDialogModal方式输入数据中存在的问题
- java从键盘输入一组数据,输出其最大值,平均值,最小值没法输出
- 关于iOS11上MJRefresh tabview刷新后,重新加载另一组数据, 回不到顶部或者头尾显示混乱等问题解决
- 一组关于手持移动设备使用安全问题的统计数据
- 关于数据输入之先输入int数值在输入string的一些小问题
- 解决输入一组数据计算负值个数,没有反映的问题
- 关于datagridview单元格不切换焦点无法获得新输入数据的问题解决方法
- 关于mysql数据库中数据输入问题
- 一组关于手持移动设备使用安全问题的统计数据
- 关于数据输入之先输入int数值在输入string的一些小问题
- 关于 WebClient类和HttpRequest的方式下载数据的问题
- 关于GridView的无数据显示问题..
- 一个关于 客户端非法取消正在进行的数据提交操作 的问题 的讨论