FZYZ-2071 A Simple Math Problem IX
P2071 -- A Simple Math Problem IX
时间限制:1000MS 内存限制:262144KB
状态:Accepted 标签: 数学问题-博弈论 无 无
Description
给定a,b,n,保证a≥2,b≥1,a^b≤n。两个人在玩游戏,每个人每次可以把a加1,或者把b加1,但是不能违反a^b<=n,无法再进行操作的人就输掉了这一场游戏。
假设两个人都足够聪明,按照最优策略进行游戏,问先手是否有必胜策略。
Input Format
第一行两个正整数 n 和 m。
接下来 m 行,每行两个正整数 a 和 b。保证 a≥2,b≥1,a^b≤n。
Output Format
m 行,如果对于这一对数字 a 和 b,如果先手有必胜策略,输出 “Yes”。否则输出 “No” (不含引号)
Sample Input
5 3
2 1
2 2
3 1
Sample Output
Yes
No
No
Hint
对于10%的数据,n=2
对于70%的数据,n<=1000
对于100%的数据,n<=10^9,m<=10^5
题解
不难想到,状态(a,b)可以转移到状态(a + 1, b)或者(a, b + 1)。设F[a][b]为该局面下先手胜败,1表示必胜,0表示必败,那么F[a][b] = (F[a + 1][b] & F[a][b +1]) ^ 1。但是数据范围太大,该怎么办呢?
首先,a和b必须满足a^b <= n,即log (a, n) >= b,又因为a >= 2,所以log (2, n) >= log(a, n),所以b <= log (2, n) <= 30。
其次,a^b <= n还可以推出当b >= 2时,a <= sqrt(n),这也是一个不大的数字。当b=1时,即便n很大,但随着a的递增,可供选择的b会逐渐减少,最后转移会变成一条链,所以根据奇偶性判断就好。
代码
#include <cstdio>
#include <iostream>
#include <cmath>
#include <cstring>
#define MAXN 50010
#define MAXM 50
using namespace std; int N, M;
int j;
long long X;
int A, B;
int Lim;
bool F[MAXN][MAXM]; char ch; int aa, bb;
int Scan() {
while(ch=getchar(),(ch<''||ch>'')&&ch!='-');
ch=='-' ? (bb=,aa=) : (aa=ch-,bb=);
while(ch=getchar(),ch>=''&&ch<='')aa=aa*+ch-;
if(bb)aa=-aa;
return aa;
} int main() {
memset(F, , sizeof(F)); //F必须开bool
N = Scan();
Lim = int (sqrt(N));
if ((Lim + N) & ) F[Lim + ][] = ;
for (int i = Lim; i >= ; --i) {
for (j = , X = ; X <= N; X *= i, ++j); //X可能会爆int
for (--j; j; --j) F[i][j] = (F[i + ][j] & F[i][j + ]) ^ ;
}
for (M = Scan(); M; --M) {
A = Scan(); B = Scan();
if (B == && A > Lim) {
if ((N + A) & ) printf("Yes\n");
else printf("No\n");
}
else {
if (F[A][B]) printf("Yes\n");
else printf("No\n");
}
}
}
FZYZ-2071 A Simple Math Problem IX的更多相关文章
- hdu 1757 A Simple Math Problem (乘法矩阵)
		
A Simple Math Problem Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
 - HDU1757 A Simple Math Problem 矩阵快速幂
		
A Simple Math Problem Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
 - hdu------(1757)A Simple Math Problem(简单矩阵快速幂)
		
A Simple Math Problem Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
 - A Simple Math Problem(矩阵快速幂)(寒假闭关第一题,有点曲折啊)
		
A Simple Math Problem Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
 - HDU 1757 A Simple Math Problem (矩阵快速幂)
		
题目 A Simple Math Problem 解析 矩阵快速幂模板题 构造矩阵 \[\begin{bmatrix}a_0&a_1&a_2&a_3&a_4&a ...
 - HDU 1757 A Simple Math Problem(矩阵)
		
A Simple Math Problem [题目链接]A Simple Math Problem [题目类型]矩阵快速幂 &题解: 这是一个模板题,也算是入门了吧. 推荐一个博客:点这里 跟 ...
 - HDU  1757  A Simple Math Problem (矩阵乘法)
		
A Simple Math Problem Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
 - hdu 5974 A Simple Math Problem
		
A Simple Math Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Ot ...
 - HDU 1757 A Simple Math Problem 【矩阵经典7 构造矩阵递推式】
		
任意门:http://acm.hdu.edu.cn/showproblem.php?pid=1757 A Simple Math Problem Time Limit: 3000/1000 MS (J ...
 
随机推荐
- Java集群之session共享解决方案
			
随着互联网的日益壮大,网站的pv和uv成线性或者指数倍的增加.单服务器单数据库早已经不能满足实际需求.比如像盛大,淘宝这样的大型网络公司,更是如此. 集群,也就是让一组计算机服务器协同工作,达 ...
 - 硬编码写RadioGroup的时候要注意设置RadioButton的Id
			
硬编码写RadioGroup的时候要注意RadioButton的id重复问题,导致选择的时候出现能够多选的情况发生,如下代码,注意Id的设置,这样避免Radiobutton的id重复. /** * 生 ...
 - 在Iframe框架下如何跳转到登录界面
			
在Iframe框架下跳转到登录界面总会跳到子界面中,类似于下图 试用Respon.Redirect()不行, 用Js函数,但我跳转代码都是写在cs文件中的,用Respose.write(),js函数根 ...
 - [总结]FFMPEG视音频编解码零基础学习方法
			
在CSDN上的这一段日子,接触到了很多同行业的人,尤其是使用FFMPEG进行视音频编解码的人,有的已经是有多年经验的“大神”,有的是刚开始学习的初学者.在和大家探讨的过程中,我忽然发现了一个问题:在“ ...
 - 外部式css样式,写在单独的一个文件中
			
外部式css样式(也可称为外联式)就是把css代码写一个单独的外部文件中,这个css样式文件以“.css”为扩展名,在<head>内(不是在<style>标签内)使用<l ...
 - 主成份分析PCA
			
Data Mining 主成分分析PCA 降维的必要性 1.多重共线性--预测变量之间相互关联.多重共线性会导致解空间的不稳定,从而可能导致结果的不连贯. 2.高维空间本身具有稀疏性.一维正态分布有6 ...
 - 谢尔排序/缩减增量排序(C++)
			
谢尔排序/缩减增量排序(C++) 谢尔排序/缩减增量排序: 他通过比较相距一定间隔的元素来工作,各趟比较所用的距离随着算法的进行而减小,直到只比较相邻元素的最后一趟排序为止.(好复杂) 看了一下实现代 ...
 - SGU 195. New Year Bonus Grant
			
时间限制:0.75s 空间限制:4M 题意: 在一颗树(最多500000个节点)中,可以对节点染色,但是一个节点染了色后,它的父节点和兄弟节点都不能再染了,求最大的染色节点数,并输出所有染色节点. S ...
 - 火狐无法访问本机IIS部署的网站,弹出:此地址使用了一个通常用于网络浏览以外目的的端口.出于安全原因,Firefox 取消了该请求 的解决办法
			
关于火狐浏览器访问本机IIS部署的网站弹出“此地址使用了一个通常用于网络浏览以外目的的端口.出于安全原因,Firefox 取消了该请求”这个错误(错误截图如下): 解决方法如下: 1.打开火狐浏览器, ...
 - python学习笔记(一)元组,序列,字典
			
python学习笔记(一)元组,序列,字典