乐乐和球球 博弈 暴力(也可以不用暴力法)
My Solution
首先 N>=K 的情况应该是 拿空N-K 然后加上 C
当 N=C 则,为C
如果
(K/N)*N=C 则 i+C
(K/N)*N=C 则 i+C
如果t*(N-i)=C 则也是 i+C //这里t*(N-i)+(t-1)*i可能>=K,但并不要紧,因为C<=K,则必定满足
否则 i++
因为1e6*20*3 所以O(n)的暴力也基本上不超时
#include
#include
//#define LOCAL
using namespace std;
int main()
{
#ifdef LOCAL
freopen("a.txt","r",stdin);
#endif // LOCAL
int T,N,K,C,t;
scanf("%d",&T);
while(T--){
scanf("%d%d%d",&N,&K,&C);
if((K/N)*N>=C) printf("%d",C);
else if(N>=K) printf("%d",N-K+C); //该那空的N-K次全部那空,然后加上C
else{
for(int i=1;i<=N;i++){ //找出那空的个数i,最优策略,就是那空的次数尽可能少 t=K/(N-i); if(t*(N-i)>=C) {printf("%d",i+C);break;}
else if(t*(N-i)<C){ //为了可以看的清楚一点,这里就分2次判断了 if(t*(N-i)+(t-1)*i>=C) {printf("%d",i+C);break;} }
}
}
if(T) printf("n");
}
return 0;
}
非特殊说明,本站所有文章均为博主原创,未经许可不得转载。
https://www.prolightsfxjh.com/
Thank you!
------from ProLightsfx
- THE END -
最后修改:2024年11月16日
非特殊说明,本博所有文章均为博主原创,未经许可不得转载。
如经许可后转载,请注明出处:https://prolightsfxjh.com/article/uestc-766/
共有 0 条评论