返回顶部

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;
    }
    
posted @ 2020-09-05 17:52  _Kolibri  阅读(201)  评论(0)    收藏  举报