【NOIP Round #6】重生
https://pjudge.ac/contest/1390/problem/21793
为什么要按照
注意到题目中:你可以认为在最后一条命之前你并不能做任务,只能对任务进行思考,而在最后一条命既可以思考也可以做任务。
首先二分答案
对于
注意一些细节:我们二分的答案最大可能是 __int128 判断一下即可(本人傻逼一样写了半个小时高精度突然想到这个东西乐)。
给出 check 函数
auto 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;
};