hdu1848(sg函数打表)】的更多相关文章

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1848 题意:中文题诶- 思路:直接sg函数打表就好了 代码: #include <iostream> #include <string.h> #define MAXN 3010 using namespace std; int f[MAXN], sg[MAXN]; void init(){//得到1000以内的fibonacci数列 f[]=; f[]=; ; ; i++){ f[i]…
kiki's game Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 40000/1000 K (Java/Others) Total Submission(s): 4972    Accepted Submission(s): 2908 Problem Description Recently kiki has nothing to do. While she is bored, an idea appears in his m…
#include<bits/stdc++.h>using namespace std;int f[1007],SG[1007],S[1007];//f为可以选取的石头个数,SG为sg函数,S为后继状态的集合int n,l,r;        int cnt=0;void getSG(int n){//SG函数打表      int i,j;      memset(SG,0,sizeof(SG));      for(i = 1; i <= n; i++){         memset…
题目链接 Description 桌子上有2n 堆石子,编号为1..2n.将第2k-1 堆与第2k 堆(1 ≤ k ≤ n)为同一组.第i堆的石子个数用一个正整数Si表示.一次分割操作指的是,从桌子上任取一堆石子,将其移走.然后分割它同一组的另一堆石子,从中取出若干个石子放在被移走的位置,组成新的一堆.操作完成后,所有堆的石子数必须保证大于0.显然,被分割的一堆的石子数至少要为2.两个人轮流进行分割操作.如果轮到某人进行操作时,所有堆的石子数均为1,则此时没有石子可以操作,判此人输掉比赛. 例如…
1067 Bash游戏 V2 1.0 秒 131,072.0 KB 5 分 1级题   有一堆石子共有N个.A B两个人轮流拿,A先拿.每次只能拿1,3,4颗,拿到最后1颗石子的人获胜.假设A B都非常聪明,拿石子的过程中不会出现失误.给出N,问最后谁能赢得比赛. 例如N = 2.A只能拿1颗,所以B可以拿到最后1颗石子. 收起   输入 第1行:一个数T,表示后面用作输入测试的数的数量.(1 <= T <= 10000) 第2 - T + 1行:每行1个数N.(1 <= N <=…
#include<bits/stdc++.h>using namespace std;int sg[1007];int main(){ int t; cin>>t; while(t--){ int n,k; cin>>n>>k; if(k%3==0){ n%=(k+1); if(n==k||n%3) cout<<"Alice"<<"\n"; else cout<<"Bob&…
题目链接 题意 : 中文题.点链接 分析 : 前置技能是 SG 函数.NIM博弈变形 每次可取石子是约数的情况下.那么就要打出 SG 函数 才可以去通过异或操作判断一个局面的胜负 打 SG 函数的时候.由于 N 很大 所以不能使用递归的方式打表.会爆栈 还有要预处理每个数的约数 打出 SG 函数之后 暴力判断初始局面的每堆石子取走约数后是否对答案产生贡献 #include<bits/stdc++.h> #define LL long long #define ULL unsigned long…
题意:给你一串含“.”和“X”的字串,每次一个玩家可以把‘."变成“X”,谁先弄到三个XXX就赢.假如先手必赢,输出所有能必赢的第一步,否则输出0. 思路:显然如果一个X周围两格有X那么肯定能一步变成XXX,所以两个人都要避免在自己回合产生这种情况.如果一开始就存在上述情况,那么肯定是那一步.否则我遍历每一个空格看看能不能下这一步.满足我在这个空格变成“X”不会造成上述情况,然后算出nim和是否留给对手一个必败态. 设sg[x]表示长度为x的空格的sg函数,然后我遍历1~x位置变成“X”,那么空…
题意:有N堆石子,每堆有s[i]个,Alice和Bob两人轮流取石子,可以从一堆中取任意多的石子,也可以把一堆石子分成两小堆 Alice先取,问谁能获胜 思路:首先观察这道题的数据范围  1 ≤ N ≤ 10^6, 1 ≤ [Si] ≤ 2^31 - 1,很明显数据量太大,所以只能通过打表找规律 打表后发现,如果x%4==0 sg[x]=x-1 ;如果 x%4==3 sg[x]=x+1;如果 其他情况 sg[x]=x; 代码: 打表代码: #include <iostream> #includ…
Alice and Bob are playing a stone game. Initially there are n piles of stones and each pile contains some stone. Alice stars the game and they alternate moves. In each move, a player has to select any pile and should remove at least one and no more t…