2022.2.27 队内个人训练赛(下)
Posted yeah17981
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2022.2.27 队内个人训练赛(下)相关的知识,希望对你有一定的参考价值。
G - A Funny Game
传送门:2484 -- A Funny Game (poj.org)
有一圈的硬币,编号从1-n,每次可以拿两个相邻或者一个硬币,Alice先拿,拿走最后一个硬币的人获胜,求谁获胜。
题解:1、2的时候Alice必胜,3及以上alice拿1个或者两个,bob去构造两条长度一样的链,之后对称就行
#include<iostream>
#include<algorithm>
#include<cmath>
char s[200];
int ab,ba;
using namespace std;
int main()
long long _,n,m;
//cin >> _;
while (cin >> n)
if(n==0)break;
if(n<=2) cout<<"Alice\\n";
else cout<<"Bob\\n";
H - Poisoned Dagger
勇士有一把刀,上面有毒,在砍了龙之后的k秒后龙会掉血(1血/秒,在第2s砍k为2时就是在2秒和3s的时候掉血),如果还在中毒效果的时候再砍一刀那么中毒效果更新(又从k开始),给一条龙的血量和勇士在什么时候砍龙,求最小的k
题解:模拟,k最小为血量/时间,然后一个循环来模拟
#include<iostream>
#include<algorithm>
#include<cmath>
int s[200];
int a,b;
using namespace std;
int main()
long long _,n,m,sum;
cin >> _;
while (_--)
cin>>n>>m;
long long num;
if(m%n==0) num=m/n;
else num=m/n+1;
cin>>a;
for(int i=1;i<n;i++)
cin>>b;
s[i]=b-a;
a=b;
sort(s+1,s+n);
if(s[1]>=num) cout<<num<<"\\n";
else
//int ans=n*num;
bool flag=0;
sum=0;
for(int i=1;i<n;i++)
if(s[i]<num)
sum+=s[i];//ans-sum
else
if((n-i+1)*num+sum>=m)
flag=1;
break;
else
if((m-sum)%(n-i+1)==0) num=(m-sum)/(n-i+1);
else num=(m-sum)/(n-i+1)+1;
if(s[i]<num)
sum+=s[i];
else
flag=1;
break;
if(flag==0)
cout<<m-sum<<"\\n";
else
cout<<num<<"\\n";
I - Frog Traveler
青蛙在井底,在位置i的时候能最多能跳a[i]步(0-a[i]),跳到位置i的时候会往下滑b[i]步,问啥时候能跳到井口
笑死,发现非常早之前就查了个眼,到现在都没补,先放着
J - Pisces
传送门:Problem - 1023G - Codeforces
待补
K - Beautiful Decomposition
传送门:Problem - 279E - Codeforces
待补
L - Cutting Game
传送门:2311 -- Cutting Game (poj.org)
有一张W*H的纸,每轮,一个人只能从横着切一刀,另一个人只能从竖着切一刀,求谁先切不动
博弈论,SG函数
就这样吧先摸了。
以上是关于2022.2.27 队内个人训练赛(下)的主要内容,如果未能解决你的问题,请参考以下文章