专栏文章
题解:P14056 【MX-X21-T1】[IAMOI R5] 七休制
P14056题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mintvsm7
- 此快照首次捕获于
- 2025/12/02 08:16 3 个月前
- 此快照最后确认于
- 2025/12/02 08:16 3 个月前
解题思路
这道题的核心是要安排加训、休息和颓废三种活动,使得疲劳度为的天数尽可能多。
初始疲劳度为,三种活动对疲劳度的影响分别是:
加训:疲劳度
休息:疲劳度不变
颓废:疲劳度
我们需要找到最优的安排策略,关键观察点在于:
- 休息天的疲劳度保持不变,所以如果某一天是休息日且当天疲劳度为,它必然会贡献天的有效天数
- 加训和颓废是一对可以相互抵消的活动:一次加训后再进行一次颓废,疲劳度会回到
基于以上观察,最优策略是:
- 首先用尽量多的加训-颓废组合,每组这样的组合可以产生天疲劳度为的日子(颓废的那天)
- 所有的休息日都可以安排在疲劳度为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;
}
代码的核心逻辑是:
- 计算加训(a)和颓废(c)的最小数量,这是能形成的完整抵消对数
- 每对抵消能产生1天疲劳度为0的日子
- 所有休息日(b)都能贡献1天疲劳度为0的日子
- 总和就是最大可能的疲劳度为0的天数
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...