zoukankan      html  css  js  c++  java
  • 模板

    https://scut.online/p/93
    每次取走的石子是b的幂次。打表暴力发现规律。

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    
    const int MAXN=1000005;
    //f[i]:可改变i状态的方式
    //SG[]:0~n的SG函数值
    //S[]:为x后继状态的集合
    vector<int> f[MAXN];
    int SG[MAXN],S[MAXN];
    void  getSG(int n){
        for(int i = 1; i <= n; i++){
            int l=f[i].size();
            //后继状态 最多有l 种
            for(int j=0;j<=l;j++){
                S[j]=0;
            }
            for(auto vi:f[i]){
                //vi:从i状态能取走的石子数
                S[SG[i-vi]]=1;
            }
            for(int j=0;j<=l;j++){
                if(!S[j]){
                    SG[i] = j;
                    break;
                }
            }
            cout<<"SG["<<i<<"]="<<SG[i]<<endl;
        }
    
    }
    
    int N=120;
    
    void enque(int id){
        ll cur=1,b=8;
        while(id>=cur){
            f[id].push_back(cur);
            cur*=b;
        }
    }
    
    int main() {
    #ifdef Yinku
        freopen("Yinku.in", "r", stdin);
    #endif // Yinku
        for(int i=0;i<=N;i++){
            enque(i);
        }
        getSG(N);
    }
    

    https://scut.online/p/42
    每次有1或2两种取法,直接求sg然后异或一起?鹏哥有个记忆化搜索的写法感觉更巧妙一些。

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    /*
    const int MAXN=1000005;
    //f[i]:可改变i状态的方式
    //SG[]:0~n的SG函数值
    //S[]:为x后继状态的集合
    vector<int> f[MAXN];
    int SG[MAXN],S[MAXN];
    void  getSG(int n){
        for(int i = 1; i <= n; i++){
            int l=f[i].size();
            //后继状态 最多有l 种
            for(int j=0;j<=l;j++){
                S[j]=0;
            }
            for(auto vi:f[i]){
                //vi:从i状态能取走的石子数
                S[SG[i-vi]]=1;
            }
            for(int j=0;j<=l;j++){
                if(!S[j]){
                    SG[i] = j;
                    break;
                }
            }
            cout<<"SG["<<i<<"]="<<SG[i]<<endl;
        }
    
    }
    
    int N=120;
    
    void enque(int id){
        if(id>=1)
            f[id].push_back(1);
        if(id>=2)
            f[id].push_back(2);
    }
    */
    int main() {
    #ifdef Yinku
        freopen("Yinku.in", "r", stdin);
    #endif // Yinku
        /*for(int i=0;i<=N;i++)
            enque(i);
        getSG(N);*/
        int T;
        scanf("%d",&T);
        int n,m;
        while(T--){
            scanf("%d%d",&n,&m);
            int sg=(n%3)^(m%3);
            puts(sg?"Naive is excited.":"Excited is naive.");
        }
    }
    
  • 相关阅读:
    silverlight 会越来越好
    如何在C#里实现端口监视呢?
    我就这么活着
    无意间看到的两句话
    唉,心情
    有一种美丽的缘分,叫错过!
    HTML5之Canvas绘图——阴影效果呈现方法
    jQuery——动态给表格添加序号
    PHP代码——Curl实现网页代理proxy
    HTML5之Canvas绘图——Canvas画布调整之移动、缩放、旋转
  • 原文地址:https://www.cnblogs.com/Yinku/p/11291810.html
Copyright © 2011-2022 走看看