P3817 小A的糖果

题目链接:P3817

解题思路:

每次吃的时候,吃后面一个,前面已经满足条件了,只要更改后面的那个,就能一次使更多的盒子满足条件,第一个要特判,不然按照这个思路是有可能出现盒子里糖果数是负数的。

AC代码:

 

 1 #include <iostream>
 2 #include <cstdio>
 3 #define ll long long
 4 using namespace std;
 5 ll n,x,a[200010];
 6 int main()
 7 {
 8     ll cnt = 0;
 9     cin >> n >> x;
10     for(int i = 0; i < n; i++) cin >> a[i];
11     if(a[0] > x) // 第一个特判
12     {
13         cnt += a[0]-x;
14         a[0] = x;
15     }
16     for(int i = 1; i < n; i++)
17     {
18         if(a[i]+a[i-1] > x)
19         {
20             cnt += a[i]+a[i-1]-x; // 加上吃的糖果数
21             a[i] = x-a[i-1]; // 更改后一个
22         }
23     }
24     cout << cnt;
25     return 0;
26 }

 

这么水的题我什么不会?刚学贪心?那没事了。

 

posted @ 2020-09-08 20:00  不敢说的梦  阅读(219)  评论(0)    收藏  举报