转载请注明出处,谢谢 http://blog.csdn.net/ACM_cxlove?viewmode=contents           by---cxlove

题目:按照某种规律生成一个序列,选中某段连续的序列玩NIM游戏,先手能必胜的有多少种。

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4675

乍一看毫无头绪啊。序列貌似会形成循环,可是数量如此之大。

先按照规则生成序列。保存前i个堆的异或值,存在nim[i]。

如果想要必胜,是选中连续的数异或不为0,如果存在nim[i]==nim[j]则表示i+1,i+2……j的异或值0,则是一组必败的局面。

这样我们便想到从对立而考虑,总共的选择是n*(n+1)/2。

将nim排序,找出相同 的nim值有多少个,便可以统计出有多少必败的局面。

同时注意nim[i]为0的话,现在从1----i便是必败局面,也要减掉。

另外注意int溢出

#include<iostream>
#include<cstdio>
#include<ctime>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<cstdlib>
#include<vector>
#define C    240
#define TIME 10
#define inf 1<<25
#define LL long long
using namespace std;
int a[100005],nim[100005];
int main(){int t,n,s,w;scanf("%d",&t);while(t--){scanf("%d%d%d",&n,&s,&w);int g=s,ret=0;for(int i=0;i<n;i++){a[i]=g;if(a[i]==0)  a[i]=g=w;if(g%2==0)  g/=2;else g=(g/2)^w;ret^=a[i];nim[i]=ret;}sort(nim,nim+n);LL sum=(LL)n*(n+1)/2;int len=1;for(int i=1;i<n;i++){if(nim[i]==nim[i-1])len++;else{if(nim[i-1]==0)sum-=len;sum-=(LL)len*(len-1)/2;len=1;}}sum-=(LL)len*(len-1)/2;printf("%lld\n",sum);}return 0;
}

ZOJ 3591 Nim (NIM博弈+统计相关推荐

  1. 【ZOJ - 3591】Nim(博弈问题,思维,STLmap)

    题干: Nim is a mathematical game of strategy in which two players take turns removing objects from dis ...

  2. ZOJ - 3591 NIM

    ZOJ - 3591 NIM 题目大意:给你n,s,w和代码,能生成长度为n的序列,问异或和不为0的子序列有多少个? 这是个挂羊头卖狗肉的题,和NIM博弈的关系就是要异或和不为0,一开始以博弈甚至循环 ...

  3. Poj1704:staircase nim【博弈】

    题目大意:有一个无限长的一维的棋盘,棋盘上N个格子放置着棋子.两个人轮流操作,每次操作能选择其中一个棋子向左移动,但不能越过其它棋子或者两枚棋子放在同一格中,最后不能操作的人算输,问先手是否必胜? 思 ...

  4. (转载)Nim游戏博弈(收集完全版)

    Nim游戏的概述: 还记得这个游戏吗? 给出n列珍珠,两人轮流取珍珠,每次在某一列中取至少1颗珍珠,但不能在两列中取.最后拿光珍珠的人输. 后来,在一份资料上看到,这种游戏称为"拈(Nim) ...

  5. 【小组专题二:博弈论入门综述(1)】NP状态 | SG函数 | 巴什博奕、威佐夫博弈、斐波那契博弈、Nim游戏、SJ定理

    博弈论综述[1] 前言 博弈与博弈论 博弈树 NP状态 SG函数(Sprague-Grundy) Sprague-Grundy Theorem 巴什博奕 Bash Game 威佐夫博弈 扩展威佐夫博弈 ...

  6. poj 2234 博弈-Nim

    (转载)Nim游戏博弈(收集完全版) Nim游戏的概述: 还记得这个游戏吗? 给出n列珍珠,两人轮流取珍珠,每次在某一列中取至少1颗珍珠,但不能在两列中取.最后拿光珍珠的人输. 后来,在一份资料上看到 ...

  7. LightOJ-1253 Misere Nim

    LightOJ-1253 Misere Nim nim博弈的变形. 和一般nim博弈的区别:最后一个取石子的lose,输出win的人. 还是亦或求解, 只要特判全是1的情况. #include < ...

  8. VB6 调用 Nim 生成的 DLL

    2019独角兽企业重金招聘Python工程师标准>>> 关于 Nim Nim 是德国人 开发的编程语言,最初叫 Nimrod.Nim 有下面几个特点: 强制缩进语法 AST 操控 编 ...

  9. 【学习笔记】平等博弈及常见的公平博弈类型

    文章目录 平等博弈 nim堆 SG定理 nim和 常见的公平博弈模型 bash博弈 nim博弈 nim-k博弈 wythoff博弈 扩展wythoff博弈 fibonacci博弈 阶梯博弈 green ...

最新文章

  1. 封装、继承、多态、访问符,范围修饰符
  2. [Android]手动触发OnClick事件
  3. c#截取字符串后几位_基础库的字符串设计
  4. centos7 防火墙_Linux系统安全Centos 7的Firewalld防火墙基础
  5. 最短路径问题总结,时间复杂度,空间复杂度对比(JAVA)
  6. oracle dba create view 失败 解决办法
  7. 程序员去交友网站找女友,结果意外了...
  8. 基于FPGA的简易DDS信号发生器的设计与验证
  9. Java String的内存机制
  10. Django框架orm
  11. 微信朋友圈点赞生成器
  12. DSI3协议 CRM模式通信讲解
  13. 大学十年(一个程序员的路程)
  14. XPath之电影天堂数据爬取
  15. 快速构建栅格地图-MatLab
  16. [转]老师几乎气绝身亡,搞笑....
  17. 【智能商务】学习财务分析,看这10张思维导图就够啦
  18. UG 二次开发中文帮助文档,UFun在线帮助文档, NX API 中文帮助文档
  19. 补鞋匠迈尔鲁夫的故事(二)
  20. ssm毕设项目企业部门报销管理g9d62(java+VUE+Mybatis+Maven+Mysql+sprnig)

热门文章

  1. 餐饮行业怎么才能玩转大数据?
  2. 将复制文件ExtremeCopy整合到TC(Total commander)中
  3. 如何识别图片上文字的字体?(注:仅限英文)
  4. 【gflags 】google gflags 使用方法
  5. 电脑重装系统后黑屏提示Reboot and select proper Boot device怎么办
  6. 2023.05.14十四届蓝桥杯青少组中高级组省赛Python
  7. [软件人生]读史的三个境界看软件业
  8. mysql8.0安装详解
  9. akg k420耳机换线
  10. 饭否叽歪都挂了,执行者更新