《博弈论》
主要是能读懂题目发现这是一个博弈论就可以了。
题目里“同攻速”只意味着冷却相同,
错误示例
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
using u128 = __uint128_t;
int main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);ll t;cin>>t;while(t--){ll h,x,y;cin>>h>>x>>y;if(y==0||(x>=h&&y<h))cout<<"No"<<'\n';else if(x==0||(y>=h&&x<h)||(x<=y))cout<<"Yes"<<'\n';else{//96 2 人他人YES 96 1 NO 96 3 YES跟奇偶没关系/*100 4 3100%7=2 YES人先手100 27 3100%30=10 NO100 27 13100%40=20 NO100 17 13100%30=10 YES发现规律人先手,并且余数小于y即可YES*/ll sum=x+y;sum=h%(sum);if(sum<=y)cout<<"Yes"<<'\n';else cout<<"No"<<'\n';}}return 0;
}
AC代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
using u128 = __uint128_t;
int main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);ll t;cin>>t;while(t--){ll h,x,y;cin>>h>>x>>y;if(y==0||(x>=h&&y<h))cout<<"No"<<'\n';else if(x==0||(y>=h&&x<h)||(x<=y))cout<<"Yes"<<'\n';else{//96 2 人他人YES 96 1 NO 96 3 YES跟奇偶没关系/*100 4 3100%7=2 YES人先手100 27 3100%30=10 NO100 27 13100%40=20 NO100 17 13100%30=10 YES发现规律人先手,并且余数小于y即可YES*/ll tower=h/x;if(h%x==0)tower--;ll total=h-tower*x;//塔伤害了tower次,剩下的生命值可能一次就被英雄击杀,//或者英雄中途跟塔博弈了tower次,并给于小兵最后一击total-=(tower+1)*y;if(total<=0)cout<<"Yes"<<'\n';else cout<<"No"<<'\n';}}return 0;
}