zoukankan      html  css  js  c++  java
  • hdu 2999 Stone Game, Why are you always there? (简单SG,有个优化)

    题意:

    一排石头,个数是K。

    有n个数,a1...an。

    每人每次取石子只能取连续的x个。x属于a1...an的一个。

    没法取者负。

    思路:

    简单的SG。但是TLE!后面加了一个优化~这个优化不好想到吧,看了别人的代码才发现的。就是把a1...an中重复的去掉!。。。

    直接看代码。

    代码:

    int sg[1005];
    int n,m,k;
    int a[105];
    
    int dfs(int x){
        if(sg[x]!=-1)
            return sg[x];
        bool vis[1005]={0};
        rep(i,1,n){
            if(x<a[i]) break;
            for(int j=1;j+a[i]-1<=x;++j){
                int t1=0;
                t1=t1^dfs(j-1);
                t1=t1^dfs(x-j-a[i]+1);
                vis[t1]=true;
            }
        }
        for(int i=0;;++i){
            if(!vis[i]){
                return sg[x]=i;
            }
        }
    }
    int main(){
        while(scanf("%d",&n)!=EOF){
            rep(i,1,n) scanf("%d",&a[i]);
            sort(a+1,a+1+n);
    
            ///去重,时间一下缩短一半,这数据....
            int t1=0; int b[105]; b[0]=-1;
            rep(i,1,n) if(a[i]!=b[t1]) b[++t1]=a[i];
            n=t1;
            rep(i,1,n) a[i]=b[i];
    
            scanf("%d",&m);
            mem(sg,-1);
            while(m--){
                scanf("%d",&k);
                if(!dfs(k))
                    puts("2");
                else
                    puts("1");
            }
        }
    }
  • 相关阅读:
    WebService相关
    远程连接db2数据库
    修改VNC分辨率大小
    java面向对象的核心思想
    小故障排查
    使用IntelliJ IDEA开发java web
    WebService概述
    Qt开发之信号槽机制
    用SoapUI 测试Web Service
    剑指offer:滑动窗口的最大值
  • 原文地址:https://www.cnblogs.com/fish7/p/4005293.html
Copyright © 2011-2022 走看看