CF1307A Cow and Haybales 题解
这题的主要思路其实就是贪心。
由于移动的次数限制,所以根据贪心的算法,我们发现,无论是哪个数,能给 \(a[1]\) 做的贡献都是一样的,但花费不一样,肯定是离 \(a[1]\) 越近,效率越高啊!所以我们写代码时尽量先从左往右向 \(a[1]\) 移。
最后,通过模拟,就可找出答案。
代码:
#include <bits/stdc++.h>
using namespace std;
int t; //t表示组数
int main()
{
cin >> t;
while (t --)
{
int ans, n, d, a[101]; //ans记录答案, n是个数,d是次数
cin >> n >> d;
cin >> a[1];
ans = a[1]; //初始化答案
for (int i = 2; i <= n; i ++) //切记,从2开始!!!
cin >> a[i]; //输入
for (int i = 2; i <= n; i ++) //i表示当前移动到的位置
{
if (d < i - 1) break; //如果一个都换不了,直接break
if (d >= a[i] * (i - 1)) ans += a[i], d -= a[i] * (i - 1); //更新答案
else ans += d / (i - 1), d -= d / (i - 1) * (i - 1); //同样的更新
}
cout << ans << endl; //输出
}
return 0; //打完收工,回家
}
这是本蒟蒻的第一篇题解,请大家多多关照。

浙公网安备 33010602011771号