ZOJ3591_Nim
题目的意思是给你n个ai,有多少种不同的连续段使得用该段数中所有的数字玩Nim游戏的先手必胜。
首先根据博弈论的知识,我们知道,要使先手必胜,那么只要保证所有的数的异或值不为0就可以了。
这个题目,给的ai的求法给了我很大的误导,我一开始以为要从哪里入手来突破这个题目。结果。。。。。。。深坑啊。
是这样来考虑的,我们直接模拟,分别得出所有的ai的值,然后用一个数字fi表示a1到ai连续的数的异或值。
这样要求异或不为0的情况,我们只要求出所有值为0的情况,然后将所有的情况减去这些情况就可以了。
对于求所有值为0的情况,有两种可能:
一、f[i]=0,说明从1到i的数所有的数的异或值就为0,这就是一个满足条件的段哦。
二、存在1<=i<j<=n,f[i]=f[j],这说明i+1到j这一段的所有的异或值为0(异或的性质哦),这也是一个满足条件的段。
有了上面的两点,我们就可以进行统计了。
统计有两种方法:
一、排个序,然后对于值相同的两两组合就好了。
二、用map哈希的方法记录每一个数出现了多少种情况,然后组合一下就好了。
#include <iostream>
#include <cstdio>
#include <map>
#include <algorithm>
#include <cstring>
#define ll long long
#define maxn 100100
using namespace std; int n,m,k,a[maxn],S,W,t;
ll ans,tot; int main()
{
cin>>t;
while (t--)
{
scanf("%d%d%d",&n,&S,&W);
ans=(ll)n*(n+)/,tot=;
int g = S;
for (int i=; i<=n; i++)
{
a[i] = g;
if( a[i] == ) { a[i] = g = W; }
if( g% == ) { g = (g/); }
else { g = (g/) ^ W; }
}
k=;
for (int i=; i<=n; i++)
{
k^=a[i];
a[i]=k;
}
sort(a+,a++n);
k=,a[n+]=a[]=-;
for (int i=; i<=n+; i++)
{
if (a[i]==a[i-]) k++;
else
{
if (a[i-]==) tot+=k;
tot+=(ll)k*(k-)/;
k=;
}
}
printf("%lld\n",ans-tot);
}
return ;
}
ZOJ3591_Nim的更多相关文章
随机推荐
- debug 调试原理理解
引言: 昨天,看了一篇文章,很受启发,记得之前听别的人远程调试过代码,觉得很神奇,在自己程序里打断点,连接远程服务器,开启调试后可以调用远程方法来看数据的输入和输出,不需要查找问题,重新部署,测试问题 ...
- day 10 文件
1.文本文件 ,二进制文件 二进制文件:用vi 打开一个图片,MP3,视频 2.文件打开方式 # 重定向 文件不存在 文件存在 r error 文件开头 w 相当于 > 创建 覆盖,删除以前的内 ...
- 求助:springboot调用存储过程并使用了pagehelper分页时报错com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException
存储过程如下: dao层的sql Controller层调用: html页面 没有使用pagehelper分页之前,可以正常使用 使用了pagehelper之后就报错 ### Error queryi ...
- 创龙OMAPL138开发板测试(1)
1. 里面的DSP内核是否能单独使用?先测试一个LED灯的例程先,仿真器连接上开发板,显示有C6748和PRU还有ARM9.对了,板子的拨码开关要01111,是DEBUG模式才可以. 2. 下载一下. ...
- springAOP之代理模式
springAOP指的是在spring中的AOP,什么是AOP,相对于java中的面向对象(oop),在面向对象中一些公共的行为,像日志记录,权限验证等如果都使用面向对象来做,会在每个业务方法中都写上 ...
- 一步步带你配置IIS(包括错误分析)
今天趁着工作中的问题一下子来解决IIS配置 发布网站:点击VS发布网站 第一步:新建配置文件(我取名为webSite) : 第二步:选择发布方法并且选择把文件发布到哪里(比喻在D盘创建一个文件夹web ...
- windows环境下apache-apollo服务器搭建及发布订阅测试
查证了一些资料之后,发现 apache-apollo服务器使用的人还是挺多的,资料也比较齐全,所以直接选择 apache-apollo了,具体性能如何,先用起来再说吧: 1.下载 apache-apo ...
- TW实习日记:第八天
今天早上主要是接着做昨天的微信端网页预览附件,听同事说当打包代码放入服务器上后,就不存在跨域问题了,也就懒得自己写接口了,那么就希望自己能一次过吧...结果写着写着,发现开发文档中关于预览文件的方法, ...
- Zabbix_agnet部署
原文发表于cu:2016-05-18 参考文档: zabbix监控linux主机:http://www.osyunwei.com/archives/8035.html 一.环境 Server:基于C ...
- Firefox必备的24款web开发插件
from: 软件过滤: 排序:收录时间 | 浏览数 网页开发FireFox插件 Firebug Firebug是Firefox下的一款开发类插件,现属于Firefox的 五星级强力推荐插件之一.它集H ...