• 脑洞 博弈 E. Competitive Seagulls 2017 ACM Arabella Collegiate Programming Contest


    题目链接:http://codeforces.com/gym/101350/problem/E

    题目大意:给你一个长度为n的方格,方格上面都被染色成了白色。每次染色都是选择白色的,假设目前选择的这块白色(白色联通块)的长度为L,每次都只能选择<=(L+1)/2的素数染色。问谁赢?

    思路:果然博弈不会啊,感谢这位神牛:链接

    当n=2||n=3先手必败

    其余的n必胜,n=1就不解释了。当n>=4的时候,如果是奇数,那么每次都取出中间两个,如果是偶数,每次都取出中间三个,然后对称取即可。

    //看看会不会爆int!数组会不会少了一维!
    //取物问题一定要小心先手胜利的条件
    #include <bits/stdc++.h>
    using namespace std;
    #pragma comment(linker,"/STACK:102400000,102400000")
    #define LL long long
    #define ALL(a) a.begin(), a.end()
    #define pb push_back
    #define mk make_pair
    #define fi first
    #define se second
    #define haha printf("haha
    ")
    
    int main(){
        int t; cin >> t;
        while (t--){
            int n; scanf("%d", &n);
            if (n == 2 || n == 3) puts("second");
            else puts("first");
        }
        return 0;
    }
    View Code
  • 相关阅读:
    关于重构的一些方法
    java基础 逻辑
    java基础
    去重和数组排序
    表单验证
    JS实例5
    window.document对象
    JS实例4
    JS实例3
    JS实例2
  • 原文地址:https://www.cnblogs.com/heimao5027/p/6827538.html
Copyright © 2020-2023  润新知