【POJ】【2975】Nim
博弈论
我哭……思路错误WA了6次?(好像还有手抖点错……)
本题是要求Nim游戏的第一步必胜策略有几种。
一开始我想:先全部异或起来得到ans,从每个比ans大的堆里取走ans个即可,答案如此累计……WA!
第二次:ans与每个a[i]取&,如果不为0即有一种方案……WA!
第三次:ans与每个a[i]取&,如果结果等于ans则有一种方案……WA!
第四次:ans与每个a[i]取^,如果结果<=a[i]则有一种方案……AC!
sigh……果然应该“三思”而后行……(附一例子,25/17/22这三堆的异或和为30,方案数为3)
首先我们明白,异或和ans>0意味着可以通过取走一些石子使得异或和=0,当然从某一堆中取走ans颗石子满足这个条件,但是并不是必须这样做(比如上面的例子,这样做的方案数为0)。对于一堆石子a[i],我们取多少颗可以使得异或和=0呢?当然是ans^a[i]颗啦,当然如果这一堆本身就没有那么多颗就是一种不合法的方案,所以答案应该是思路四那种= =
1 Source Code 2 Problem: 2975 User: sdfzyhy 3 Memory: 400K Time: 0MS 4 Language: G++ Result: Accepted 5 6 Source Code 7 8 //POJ 2975 9 #include<cstdio> 10 #define F(i,j,n) for(int i=j;i<=n;++i) 11 int getint(){ 12 int v=0,sign=1; char ch=getchar(); 13 while(ch<'0'||ch>'9'){ if (ch=='-') sign=-1; ch=getchar();} 14 while(ch>='0'&&ch<='9'){ v=v*10+ch-'0'; ch=getchar();} 15 return v*=sign; 16 } 17 const int N=1e7+10; 18 /******************tamplate*********************/ 19 int a[1010]; 20 int main(){ 21 int n; 22 while(scanf("%d",&n)!=EOF && n){ 23 int ans=0,s=0; 24 F(i,1,n) {a[i]=getint(); ans^=a[i];} 25 if (ans) F(i,1,n) if ((a[i]^ans)<=a[i]) s++; 26 printf("%d\n",s); 27 } 28 return 0; 29 }
View Code
转载于:https://www.cnblogs.com/Tunix/p/4304396.html
【POJ】【2975】Nim相关推荐
- 【POJ3126 Prime Path】【POJ 3087 Shuffle'm Up】【UVA 11624 Fire!】【POJ 3984 迷宫问题】
POJ3126Prime Path 给定两个四位素数a b,要求把a变换到b 变换的过程要 每次变换出来的数都是一个 四位素数,而且当前这步的变换所得的素数 与 前一步得到的素数 只能有一个位 ...
- 【poj题集整理】【存下来并不会看】
主要是整理起来自己用的.网上有多个版本. 初级: 一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) ...
- 【POJ/算法】 3259 Wormholes(Bellman-Ford算法, SPFA ,FLoyd算法)
Bellman-Ford算法 Bellman-Ford算法的优点是可以发现负圈,缺点是时间复杂度比Dijkstra算法高.而SPFA算法是使用队列优化的Bellman-Ford版本,其在时间复杂度和编 ...
- 【POJ 2482】 Stars in Your Window(线段树+离散化+扫描线)
[POJ 2482] Stars in Your Window(线段树+离散化+扫描线) Time Limit: 1000MS Memory Limit: 65536K Total Submiss ...
- BZOJ 2287 【POJ Challenge】消失之物
2287: [POJ Challenge]消失之物 Description ftiasch 有 N 个物品, 体积分别是 W1, W2, ..., WN. 由于她的疏忽, 第 i 个物品丢失了. &q ...
- 【POJ 3026】Borg Maze
[POJ 3026]Borg Maze 一个考察队搜索alien 这个考察队能够无限切割 问搜索到全部alien所须要的总步数 即求一个无向图 包括全部的点而且总权值最小(最小生成树 BFS+最小生成 ...
- 【POJ 3273】 Monthly Expense (二分)
[POJ 3273] Monthly Expense (二分) 一个农民有块地 他列了个计划表 每天要花多少钱管理 但他想用m个月来管理 就想把这个计划表切割成m个月来完毕 想知道每一个月最少花费多少 ...
- 【POJ 2485】 Highways
[POJ 2485] Highways 最小生成树模板 Prim #includeusing namespace std;int mp[501][501]; int dis[501]; bool vi ...
- 2287. 【POJ Challenge】消失之物(数组递推\分治优化背包)
2287. [POJ Challenge]消失之物 这题的思想和P4564 [CTSC2018]假面优化的思想一样,应该反过来说,假面那个题应该是借鉴这题的思路. 显然不能枚举每个物品消失O(n)O( ...
- bzoj2287【POJ Challenge】消失之物 缺一01背包
bzoj2287[POJ Challenge]消失之物 缺一01背包 链接 bzoj 思路 分治solve(l,r,arr)表示缺少物品\([l,r]\)的dp数组arr. 然后solve(l,mid ...
最新文章
- R语言ggplot2可视化使用ggplot2::ggsave函数和gridextra::marrangegrob函数将多个可视化结果保存在pdf文件中
- Waymo自动驾驶汽车扎堆冲进死胡同,一天多达50辆,附近居民蚌埠住了
- 饿了么多活利器:实时双向复制工具(DRC)
- Java 算法 寂寞的数
- linux 命令find
- 访问 Confluence 6 的计划任务配置
- JAVA的Random类(转)
- Android Gradle 完整指南(转)
- c语言字符串拼接变量,C语言实现字符串拼接
- 树莓派zero 2w i2c操作 rda5807收音机芯片记录(电台差转站点远程监听可行性探讨)
- 银行爱“IOE”爱得有多深
- 题目234 吃土豆
- We never been grown up
- 七夕界的浪漫之光,向你安利程序员的表白方式
- c语言iota函数,C++ iota函数用法详解
- Python实现ACO蚁群优化算法优化支持向量机回归模型(SVR算法)项目实战
- 计算机视觉-图像处理基础
- java.lang.OutOfMemoryError
- 广义互相关 matlab,关于小波分析和广义互相关
- 人工智能技术在软件开发中的应用