题解:P16426 「YLLOI-R4-T2」听妈妈的话
题目传送门
思路
考虑贪心。
注意到只要两只鸡相邻便可产出鸡蛋,对于除对方外但相邻的鸡,只需使其性别不同即可(因为不限制两个性别的数量,所以不用考虑后效性)。
两只鸡没有都被孵化时无法产出鸡蛋,所以应等两只鸡都孵化。显然不能暴力枚举所有时间点,直接取两只鸡中孵化时间最晚的即可。由于两只鸡相邻时,每天都可产出鸡蛋,所以用 \(t\) 减去二者的最大值即可。
有一种特殊情况:有一只鸡在 \(t\) 后才能孵化,需要特判,对答案的贡献为 \(0\)。
代码
AC Code
#include <iostream>
#define int long long
using namespace std;
int n,t,a[1000005],ans;
signed main()
{
cin >> n >> t;
for(int i=1;i<=n;i++)
{
cin >> a[i];
}
for(int i=1;i<n;i++)
{
// 计算答案的贡献,特判大于t的情况
ans+=max(t-max(a[i],a[i+1]),0ll);
}
cout << ans;
return 0;
}

浙公网安备 33010602011771号