首页 > 代码库 > CSU1350 To Add which?
CSU1350 To Add which?
题目链接:
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1350
这题目因为每一个数都跟相邻的数有关,所以可以从左到右和从右到左一次扫一遍即可
代码:
1 #include<iostream> 2 #include<cstdio> 3 #define M 100100 4 using namespace std; 5 6 int num[M],Max[M],Min[M]; 7 8 int max(int a,int b) 9 {10 return a>b?a:b;11 }12 int main()13 {14 int T,n,D;15 long long ans;16 cin>>T;17 while(T--){18 ans=0;19 cin>>n>>D;20 for(int i=0;i<n;i++) cin>>num[i];21 22 Max[0]=num[0];23 for(int i=1;i<n;i++)24 {25 if(Max[i-1]-num[i]>D)26 Max[i]=Max[i-1]-D;27 else Max[i]=num[i];28 }29 30 Min[n-1]=num[n-1];31 for(int i=n-2;i>=0;i--)32 {33 if(Min[i+1]-num[i]>D)34 Min[i]=Min[i+1]-D;35 else Min[i]=num[i];36 }37 38 for(int i=0;i<n;i++) ans+=(max(Min[i],Max[i])-num[i]);39 cout<<ans<<endl;40 }41 return 0;42 }
CSU1350 To Add which?
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。