题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1188

分析:

设SG[i]表示一个石子在位置i上的SG值

这个很容易暴力求,因为i的后继状态肯定是所有的(j,k),其后继状态的SG值就是SG[j]^SG[k]

然后整个游戏的SG值就是SG[1]^SG[1]^SG[1]^...^SG[2]^SG[2]^......也就是说一个堆有多少个石子就要异或多少下。

因为异或的特殊性质,所以如果一个堆的石子个数是偶数,那么就是偶数个同样的数相异或,结果为0,不考虑。如果一个堆的石子个数是奇数,可以看作偶数+1,所以只要异或1次

至于题目还要求第一步的方法和方案数,可以枚举解决。

设整个游戏的SG值为ans

那么我们枚举(i,j,k)作为第一步,那么什么样的(i,j,k)可以作为第一步呢?最直接的想法对于每个i,j,k,把a[i]-=1,a[j]+=1,a[k]+=1,对整个局面重新异或计算下新的全局SG值。当然其实没必要这么做,这样很慢的。再次根据异或的特殊性质,可以直接新的SG=ans^SG[i]^SG[j]^SG[K]。为什么呢?因为我在原来的基础上,再次异或一个SG[i]就相当于减去一个i位置上的石子,异或一个SG[J]就相当于加上一个j位置上的石子,异或一个SG[k]就相当于加上一个k位置上的石子。

于是就解决了。

最新文章

  1. Https方式使用Git@OSC设置密码的方式
  2. 如何使用github搭建个人博客
  3. Finalize()、Dispose()、SafeHandle、GC
  4. 【Android】Android Camera实时数据采集及通过MediaCodec硬编码编码数据的流程
  5. Flex弹性布局在移动设备上的应用
  6. Ansible之playbook
  7. 信号量及PV原语
  8. Java基础知识强化50:运行javac 报告javac不是内部或外部命令(已解决)
  9. 常见的 http 状态码
  10. Intellij idea生成Hibernate实体类
  11. EclipseEE导入项目出现的那些问题
  12. session与cookie的区别与联系
  13. iOS数据解析UI_14
  14. sql 查询 某字段 重复次数 最多的记录
  15. recovery 升级'@/cache/recovery/block.map' failed错误问题
  16. android:ListView 的简单用法
  17. MySQL 单条记录长度最大65535
  18. Python:高效计算大文件中的最长行的长度
  19. java读取txt文件的2中方法---并将内容(每一行以固定的字符分割切成2段)存到map中去
  20. springjdbc使用c3p0连接池报错 java.lang.NoClassDefFoundError: com/mchange/v2/ser/Indirector

热门文章

  1. 烂泥:高负载均衡学习haproxy之TCP应用
  2. android PopupWindow使用实例
  3. c++11 新特性之lambda表达式
  4. Unity3D中的线性插值Lerp()函数解析
  5. SQL触发器、事物
  6. [No000033]码农网-如何锻炼出最牛程序员的编码套路
  7. android ndk 无法找到 so 案例一例
  8. 学习cocos 空程序
  9. JavaScript Boolean 对象
  10. vue-route+webpack部署单页路由项目,访问刷新出现404问题