zoukankan      html  css  js  c++  java
  • [UOJ #51]【UR #4】元旦三侠的游戏

    题目大意:给$n$,一个游戏,给$a,b$,两个人,每人每次可以把$a$或$b$加一,要求$a^bleqslant n$,无法操作人输。有$m$次询问,每次给你$a,b$,问先手可否必胜

    题解:令$f_{i,j}$表示$a=i,b=j$使得胜负,$f_{i,j}$可由$f_{i+1,j},f_{i,j+1}$推出,但这样会$MLE(b=1)$,发现若$a>sqrt n$,可以直接奇偶性判断。

    卡点:原来写的东西不知道为什么锅,换成题解的方式就过了

    C++ Code:

    #include <cstdio>
    #define maxn 32010
    const int sq = 32000;
    int n, m;
    int exp[maxn];
    bool f[maxn][31];
    int main() {
    	scanf("%d%d", &n, &m);
    	exp[1] = n;
    	for (int i = 2; i <= sq; i++) {
    		if (i > n) exp[i] = 0;
    		else {
    			long long S = i, j;
    			for (j = 2; (S *= i) <= n; j++) ;
    			exp[i] = j - 1;
    		}
    	}
    	f[sq + 1][1] = !(n - sq - 1 & 1);
    	for (int i = sq; i > 1; i--) {
    		for (int j = exp[i]; j; j--) {
    			f[i][j] = !(f[i][j + 1] || f[i + 1][j]);
    		}
    	}
    	while (m --> 0) {
    		int a, b;
    		scanf("%d%d", &a, &b);
    		if (a > sq) puts((n - a & 1) ? "Yes" : "No");
    		else puts(f[a][b] ? "No" : "Yes");
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    Centos7.3安装jdk和maven
    Centos7.3安装sftp服务和ssh
    Centos7.3安装,并设置网络和防火墙
    Docker 常用命令
    Tomcat配置
    MySQL配置
    配置JDK
    JTable的模型
    JavaBean和List<JavaBean>
    JavaBean
  • 原文地址:https://www.cnblogs.com/Memory-of-winter/p/9801812.html
Copyright © 2011-2022 走看看