Codeforces Round #531 (Div. 3) C. Doors Breaking and Repairing (博弈)

-
题意:有\(n\)扇门,你每次可以攻击某个门,使其hp减少\(x\)(\(\le 0\)后就不可修复了),之后警察会修复某个门,使其hp增加\(y\),问你最多可以破坏多少扇门?
-
题解:首先如果\(x>y\),那么我肯定全部都能破坏,否则,统计\(hp\le x\)的门的个数,谁先碰门谁先赢,而我是先手,所以能破坏的门的个数就是\(\lceil \frac{cnt}{2} \rceil\).
-
代码:
int n,x,y; int a[N]; int main() { //ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); n=read(); x=read(); y=read(); int cnt=0; for(int i=1;i<=n;++i){ a[i]=read(); if(a[i]<=x) cnt++; } if(x>y) printf("%d\n",n); else{ if(cnt==0) puts("0"); else printf("%d\n",(cnt-1)/2+1); } return 0; }
𝓐𝓬𝓱𝓲𝓮𝓿𝓮𝓶𝓮𝓷𝓽 𝓹𝓻𝓸𝓿𝓲𝓭𝓮𝓼 𝓽𝓱𝓮 𝓸𝓷𝓵𝔂 𝓻𝓮𝓪𝓵
𝓹𝓵𝓮𝓪𝓼𝓾𝓻𝓮 𝓲𝓷 𝓵𝓲𝓯𝓮

浙公网安备 33010602011771号