码迷,mamicode.com
首页 > 其他好文 > 详细

CSU1350 To Add which?

时间:2014-07-27 10:36:22      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:

题目链接:

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?

标签:

原文地址:http://www.cnblogs.com/CSU3901130321/p/3870750.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!