• HDU


    题意:

    有两个人从N个石子堆中拿石子,其中一个人可以拿两次,第二个人只能拿一次。最后拿完的人胜利。

    思路:

    类型 Hakase先 Hakase后
    1 W L
    1 1 W W
    1 1 1 (3n) L W
    1 1 1 1 (3n+1) W L
    1 1 1 1 1 (3n+2) W W
    类型 Hakase先 Hakase后
    X 1 1 W L
    X Y 1 W W
    X Y Z W W
    X 1 1 1 W L
    X Y 1 1 W W
    X Y Z 1 W W
    X 1 1 1 1 W W
    X Y 1 1 1 W W

    1.若n = 3t,若每个石子堆都是1,A先手必输(1 1 1)。只有一个数量大于1的石子堆,则B先手A必输(X 1 1)。

    2.若n = 3t+1,若只有一堆柿子大于1(X 1 1 1)。则B先手A必输。

    按照结论写代码。。

    代码:

    #include<iostream>
    
    using namespace std;
    
    int main() {
        int t, n, d;
        scanf("%d", &t);
        while(t--) {
            bool flag = true;
            int cnt = 0, a;
            scanf("%d %d", &n, &d);
            for(int i = 0; i < n; i++) {
                scanf("%d", &a); 
                if(a >= 2)
                    cnt++;
            }
            int x = n % 3;
            if(x == 0) {
                if(cnt==0 && d==1)
                    flag = false;
                if(cnt==1 && d==2)
                    flag = false;
            }else if(x == 1){
                if(cnt<=1 && d==2)
                    flag = false;
            }
            if(flag) printf("Yes
    ");
            else printf("No
    ");
        }
        return 0;
    }
    
  • 相关阅读:
    C++(四)--线程与进程
    http1.0升级到http1.1
    odoo 基础
    Ubuntu 上安装配置 Ldap
    odoo 怎样使代码生效
    Odoo 创建自定义模块
    开源的软件应用
    域控
    Flask 数据库 SQLAlchemy
    CentOS 8 防火墙 firewall 相关命令
  • 原文地址:https://www.cnblogs.com/somliy/p/9726858.html
Copyright © 2020-2023  润新知