题解: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;
}

十年 OI 一场空,不开 long long 见祖宗。

posted @ 2026-05-15 22:28  kevin1426730  阅读(3)  评论(0)    收藏  举报