专栏文章
【NOIP Round #6】重生
个人记录参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @minhad0z
- 此快照首次捕获于
- 2025/12/02 02:24 3 个月前
- 此快照最后确认于
- 2025/12/02 02:24 3 个月前
https://pjudge.ac/contest/1390/problem/21793
为什么要按照 排序?(不需要!!!)
注意到题目中:你可以认为在最后一条命之前你并不能做任务,只能对任务进行思考,而在最后一条命既可以思考也可以做任务。
首先二分答案 这一步是肯定要做的,考虑更显然的贪心,我们对于每一个 ,肯定是能深度思考就深度思考,那么这样花的天数需要 ,但是我们考虑 天的时间用来深度思考还没消掉的,对这类不满足的任务会剩余 天,这种天数只能用在最后一天。然后在最后一条命上对该任务我们会选择再深度思考一次,我们统计这两种天数。
对于 的判断,最后一天的两种天数是否大于我们的 以及深度思考的天数加上这种剩余的天数是否大于 。
注意一些细节:我们二分的答案最大可能是 ,然后天数最大可能是 ,那么 最大可能 ,嗯开
__int128 判断一下即可(本人傻逼一样写了半个小时高精度突然想到这个东西乐)。给出 check 函数
CPPauto check=[&](int day)->bool{
int dep_type=0;
int last_day=0;
int last_dep_day=0;
rep(i,1,n){
int dep_solve=(t[i]+d[i]-1)/d[i];
if(dep_solve<=day-1){
dep_type+=dep_solve;
}else{
dep_type+=day;
++last_dep_day;
last_day+=max(0ll,t[i]-d[i]*day);
}
}
if(last_dep_day+last_day>life) return 0;
if(last_day+dep_type>(__int128)life*day) return 0;
return 1;
};
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...