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 }
这么水的题我什么不会?刚学贪心?那没事了。

浙公网安备 33010602011771号