题目链接在这里:G-Deleting Divisors_牛客竞赛博弈专题班组合游戏基本概念、对抗搜索、Bash游戏、Nim游戏习题 (nowcoder.com)

这道题一道比较明显的思路是使用sg函数,因为可以看到比较明显的一个状态推到另一个状态的过程。在考场上的话应该想到的是通过sg函数打表找规律来做。

 1 #include "bits/stdc++.h"
2 using namespace std;
3 const int MAX=100005;
4 int n;
5 int sg[MAX];
6 int main(){
7 int i,j;
8 memset(sg,0,sizeof(sg));
9 for (i=2;i<=1000;i++)
10 for (j=2;j*j<=i;j++)
11 if (i%j==0){
12 if (sg[i-j]==0 || sg[i-i/j]==0)
13 sg[i]=1;
14 }
15 for (i=1;i<=1000;i++)
16 cout<<i<<" : "<<sg[i]<<endl;
17 return 0;
18 }

下面是正解:

通过分解质因数然后观察可以看出这个和奇偶性是有关系的,我们就来考虑两种状态:

1. 如果当前数为一个奇数,那么它的所有因子一定是奇数,所以它减掉一个因子一定是一个偶数,即它的下一状态要么是已经寄了,要么是第二状态。

2. 如果当前数是一个偶数,并且不为2的次幂,那么它一定能转成第一状态,因为假设当前数为m*2^k,那么我们减去一个m,剩下的数必定为m*(2^k-1),两个奇数相乘必定是奇数。

综上,我们看到,在2状态下必胜,只有在1状态下在会输。

现在我们来看一下2的次幂怎么做,2的次幂要么转成1,要么转成2,因为转成2必胜,所以当前操作肯定是为了转成1,所以就是每次除以2,这就要看2上面的指数的奇偶了。

所以我们判断里两个,对于非2的次幂奇数必败,偶数必胜。对于2的次幂,指数奇数必败,指数偶数必胜。

 1 #include "bits/stdc++.h"
2 using namespace std;
3 int t;
4 int n;
5 int check(int x){
6 int i,j,an=0;
7 while (x%2==0){
8 an++;
9 x/=2;
10 }
11 return x==1?an:0;
12 }
13 int main(){
14 int i,j,an;
15 scanf("%d",&t);
16 while (t--){
17 scanf("%d",&n);
18 if (n%2==1) cout<<"Bob"<<endl;
19 else{
20 an=check(n);
21 if (an==0 || an%2==0) cout<<"Alice"<<endl;
22 else cout<<"Bob"<<endl;
23 }
24 }
25 return 0;
26 }

博弈论练习6 Deleting Divisors(sg找规律,思维)的更多相关文章

  1. Lieges of Legendre CodeForces - 603C (博弈论,SG找规律)

    大意: 给定$n$堆石子, 两人轮流操作, 每次操作两种选择 $(1)$任选非空堆拿走一个石子 $(2)$任选石子数为$2x(x>0)$的一堆, 替换为$k$堆$x$个石子. ($k$给定) 最 ...

  2. Gym 101147A The game of Osho(SG找规律)

    https://vjudge.net/problem/Gym-101147A 题意:给出G组数,每组数包括两个数B,N,两玩家轮流取数,使得N-num,num<=N并且num是N的整次幂.判断谁 ...

  3. 【博弈论】【SG函数】【找规律】Divide by Zero 2017 and Codeforces Round #399 (Div. 1 + Div. 2, combined) E. Game of Stones

    打表找规律即可. 1,1,2,2,2,3,3,3,3,4,4,4,4,4... 注意打表的时候,sg值不只与剩下的石子数有关,也和之前取走的方案有关. //#include<cstdio> ...

  4. BZOJ-1228 E&D 博弈SG+找啊找啊找规律

    讨厌博弈,找规律找半天还是错的.... 1228: [SDOI2009]E&D Time Limit: 10 Sec Memory Limit: 162 MB Submit: 666 Solv ...

  5. hdu 3032 Nim or not Nim? (SG函数博弈+打表找规律)

    Nim or not Nim? Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Sub ...

  6. LA 5059 (找规律 SG函数) Playing With Stones

    题意: 有n堆石子,两个人轮流取,每次只能取一堆的至少一个至多一半石子,直到不能取为止. 判断先手是否必胜. 分析: 本题的关键就是求SG函数,可是直接分析又不太好分析,于是乎找规律. 经过一番“巧妙 ...

  7. HDU-4664 Triangulation 博弈,SG函数找规律

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4664 题意:一个平面上有n个点(一个凸多边形的顶点),每次可以连接一个平面上的两个点(不能和已经连接的 ...

  8. bzoj 1228 [SDOI2009]E&D(sg函数,找规律)

    Description 小E 与小W 进行一项名为“E&D”游戏.游戏的规则如下:桌子上有2n 堆石子,编号为1..2n.其中,为了方便起见,我们将第2k-1 堆与第2k 堆(1 ≤ k ≤ ...

  9. HDU 5795 A Simple Nim(SG打表找规律)

    SG打表找规律 HDU 5795 题目连接 #include<iostream> #include<cstdio> #include<cmath> #include ...

  10. hdu 3032 Nim or not Nim? (sg函数打表找规律)

    题意:有N堆石子,每堆有s[i]个,Alice和Bob两人轮流取石子,可以从一堆中取任意多的石子,也可以把一堆石子分成两小堆 Alice先取,问谁能获胜 思路:首先观察这道题的数据范围  1 ≤ N ...

随机推荐

  1. 图形学的up

    https://space.bilibili.com/512313464 c++ 路线有前者的经历https://mp.weixin.qq.com/s?__biz=Mzg2MDU0ODM3MA==&a ...

  2. 微信小程序学习记录

    尺寸单位 rpx 常常以iphone6为开发基准,  1px = 2rpx,不同设备的比例是不同的: 小程序生命周期 和vue的生命周期很相似,不过小程序的生命周期和页面.组件的生命周期又又一点不一样 ...

  3. c#获取当前进程使用内存

    public static string GetMemory()        {            Process proc = Process.GetCurrentProcess();     ...

  4. Day21 21.2:CrawlSpider-redis分布式爬虫

    CrawlSpider-redis分布式 分布式在日常开发中并不常用,只是一个噱头! 概念: 可以使用多台电脑搭建一个分布式机群,使得多台对电脑可以对同一个网站的数据进行联合且分布的数据爬取. 声明: ...

  5. imputation文献-A systematic evaluation of single-cell RNA-sequencing imputation methods

    文章题目 A systematic evaluation of single-cell RNA-sequencing imputation methods 中文名: 单细胞RNA测序插补方法的系统评价 ...

  6. E. Permutation Game

    https://codeforces.com/contest/1772/problem/E 题目大意就是给一个1~n的全排序列,所有数字都是红色的,两人轮流操作,操作有三种选择,第一是将所有蓝色的数字 ...

  7. STM32 获取系统时钟频率

    //定义一个RCC_ClocksTypeDef 的结构体 RCC_ClocksTypeDef get_rcc_clock; //调用RCC_GetClocksFreq获取系统时钟状态 RCC_GetC ...

  8. python菜鸟学习: 8. 集合基础知识

    # -*- coding: utf-8 -*-# 列表的特性:1,去重:2.关系测试list1 = [1, 4, 6, 8, 7, 8, 9]# 集合去重list2 = set(list1)print ...

  9. Python数据挖掘——银行分控模型的建立

    数据初始化 import pandas as pd from keras.models import Sequential from keras.layers.core import Dense, A ...

  10. iframe 嵌套别的系统不显示,父窗口不响应

    显示不全,没有登录界面,检查了代码渲染了,只是display:none :换了网址 ,别的都可以,只有这个不行 搜索 复制