题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1729

看了题目感觉像Nim,但是有范围限制,有点不知道SG函数该怎么写

看了题解,最后才明白该怎么去理解 。

首先进行对s和c进行分类,

1、c = 0 的时候,无论怎样都填不满,直接跳过;

2、c = s 的时候,先手必败,即是P态;

3、c < s 的时候,可以分为两种情况:

1)c^2 + c < s 的时候,递归

2)c^2 + c > s 的时候,先手必胜,即N态

 int mex(int s, int c){
      || s == c)
         ;
     int q = sqrt(s);
     while( q+q*q >= s)
         q--;//最大的不能一次填满的数
     if(c > q) return s-c;
     else return mex(q,c);
 }

主要的理解难点就是 mex(s,c)和mex(k,c)为什么是等价的,个人是这么理解的,

当跑到第一个q+q*q<s的时候,如果c>q,那么可以一次填满,

但如果c<q,不可能一次填满,此时可以分割成两个事件,mex(c,k)和mex(s,k),

其中对于mex(s,k),mex(s,s) 是先手必败,即P态,mex(s,k+1)...mex(s,s-1)都是先手必胜,即N态,

所有移动都导致N态局面的是P态,所以显然mex(s,k)是P态,那么mex(s,k)显然与mex(k,c)等价

 #include<stdio.h>
 #include<cmath>
 #include<cstring>
 using namespace std;
 ;
 int mex(int s, int c){
      || s == c)
         ;
     int q = sqrt(s);
     while( q+q*q >= s)
         q--;//最大的不能一次填满的数
     if(c > q) return s-c;
     else return mex(q,c);
 }
 int main(){
     int N;
     int ans;
     int s, c;
     ;
     while(~scanf("%d",&N)&&N){
         ans  = ;
         ; i < N; ++i){
             scanf("%d%d",&s,&c);
             ans = ans^mex(s,c);
         }
         printf("Case %d:\n",++T);
         if(ans)
             puts("Yes");
         else
             puts("No");
     }
 }

最新文章

  1. 解决:error: .repo/manifests/: contains uncommitted changes
  2. marathon新建应用映射端口限制
  3. (转)网上总结的 NIPS 201 参会感受
  4. 使用grub手动引导linux和windows
  5. Ffmpeg
  6. 插件~Nuget中包与包的依赖关系
  7. ZookeeperNet太难用,写了个RetryHelper来进行配套使用
  8. HDU_2019——向排序好的数列中插入数
  9. SDP协议
  10. Linux下套接字具体解释(三)----几种套接字I/O模型
  11. RH253读书笔记(9)-Lab 9 Account Management Methods
  12. Django 过滤器
  13. memcached subList序列化问题
  14. 百度地图api 区级以下行政区划
  15. BZOJ 4196 软件包管理器
  16. Codeforces 873F Forbidden Indices 字符串 SAM/(SA+单调栈)
  17. js--script和link中的 integrity 属性
  18. centos 7.2 安装gitlab汉化
  19. git 先建立本地分支,再传给线上库
  20. Mac 下查看网络端口占用情况

热门文章

  1. POJ 3422 Kaka's Matrix Travels (K取方格数:最大费用流)
  2. Java 图片提取RGB数组 RGBOfCharMaps (整理)
  3. 【C#学习笔记】保存文件
  4. (六)6.17 Neurons Networks convolutional neural network(cnn)
  5. 【原创】牛顿法和拟牛顿法 -- BFGS, L-BFGS, OWL-QN
  6. 2015-10-14 晴 tcp/ip
  7. Linux多线程下载工具Axel
  8. delete archivelog all 无法彻底删除归档日志?
  9. Android Window 9问9答
  10. PHPMailer邮件类使用错误分析