专栏文章

题解:P14056 【MX-X21-T1】[IAMOI R5] 七休制

P14056题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mintvsm7
此快照首次捕获于
2025/12/02 08:16
3 个月前
此快照最后确认于
2025/12/02 08:16
3 个月前
查看原文

解题思路

这道题的核心是要安排加训、休息和颓废三种活动,使得疲劳度为00的天数尽可能多。
初始疲劳度为00,三种活动对疲劳度的影响分别是:
加训:疲劳度+1+1
休息:疲劳度不变
颓废:疲劳度1-1
我们需要找到最优的安排策略,关键观察点在于:
  1. 休息天的疲劳度保持不变,所以如果某一天是休息日且当天疲劳度为00,它必然会贡献11天的有效天数
  2. 加训和颓废是一对可以相互抵消的活动:一次加训后再进行一次颓废,疲劳度会回到00
基于以上观察,最优策略是:
  • 首先用尽量多的加训-颓废组合,每组这样的组合可以产生11天疲劳度为00的日子(颓废的那天)
  • 所有的休息日都可以安排在疲劳度为0的时候,因此每个休息日都能贡献1天有效天数

代码解析

CPP
#include<bits/stdc++.h>
using namespace std;
int main() 
{
    int a, b, c;
    cin>>a>>b>>c;
    // 计算加训和颓废能形成的最大抵消对数
    int k = min(a, c);
    // 总有效天数 = 抵消对数(每对贡献1天) + 休息天数(每天贡献1天)
    int ans = k + b;
    cout << ans << endl;
    return 0;
}
代码的核心逻辑是:
  1. 计算加训(a)和颓废(c)的最小数量,这是能形成的完整抵消对数
  2. 每对抵消能产生1天疲劳度为0的日子
  3. 所有休息日(b)都能贡献1天疲劳度为0的日子
  4. 总和就是最大可能的疲劳度为0的天数

评论

0 条评论,欢迎与作者交流。

正在加载评论...