题目链接 本题很像bash博弈,但又有些许不同,因为这里是乘法,我们可以列出前几项可能 若n=2-9,那么first可以一次取完 若n=10-18,无论first怎么取,second都能一次取完 若n=19-162,那么无论second怎么取,first都能一次取完 若n=163-324 second一定可以取完 以此类推,类似bash博弈,每一组必胜必败态交换的距离为18的倍数,那么就将n/=18直到n<=18,然后判断即可 #include<bits/stdc++.h> using…
Q - Play With Sequence HDU - 3971 这个题目是一个线段树,比较特别的线段树,就是c询问一定次数之后重新排序建树来优化减低复杂度. 第一次碰到这种题目有点迷. 这个题目写还是很好写的,就是重新排序建树的位置不太好找. 不过可以知道的是,这是更新花费时间和排序花费时间的一个平衡,这个是一个二次函数,这个二次函数的最低点可以自己测出来. 现在可能有点听不懂,写完代码就很好理解了, 我测的每隔2000次C的操作就重新建树排序是最优的. 800,1000,2200,3000…
Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 5536 Accepted Submission(s): 3151 Problem Description Stan and Ollie play the game of multiplication by multiplying an integer p by one of the numbe…
A Multiplication Game Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 2674    Accepted Submission(s): 1532 Problem Description Stan and Ollie play the game of multiplication by multiplying an in…
A Multiplication Game Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 3832    Accepted Submission(s): 2183 Problem Description Stan and Ollie play the game of multiplication by multiplying an in…
A Multiplication Game Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 5833    Accepted Submission(s): 3303 Problem Description Stan and Ollie play the game of multiplication by multiplying an in…
A Multiplication Game Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 4633    Accepted Submission(s): 2631 Problem Description Stan and Ollie play the game of multiplication by multiplying an i…
如果n在[2, 9]区间,那么Stan胜. 如果n在[10, 18]区间,那么Ollie胜,因为不管第一次Stan乘上多少,第二次Ollie乘上一个9,必然会得到一个不小于18的数. 如果n在[19, 162]这个区间呢? 比如说n=19,那么Stan乘上个2,不管Ollie怎么乘,Ollie得到的数必然在[4, 18]这个区间里面,而这里的任意一个数乘上9的话,必然会得到一个不小于19的数,Stan胜. 再比如n=162,Stan最开始乘上一个9,就将Ollie乘完以后的数限制在[18, 81…
思路:求必胜区间和必败区间! 1-9 先手胜 10-2*9后手胜 19-2*9*9先手胜 163-2*2*9*9后手胜 …… 易知右区间按9,2交替出现的,所以每次除以18,直到小于18时就可以直接判断了. 代码如下: #include<cstdio> int main() { double n; while(scanf("%lf",&n)!=EOF){ ) n/=; ) puts("Stan wins."); else puts("O…
题目大意:输入一个整数n.谁先报的数大于n,谁就输了.(初始值p  == 1 , 后一个人报的数必须在前一个人报的数的基础上乘上(2 ~ 9)之间的任意一个数) 解题思路:巴什博奕的变形 1) 解题思路: 如果输入是 2 ~ 9 ,因为Stan 是先手,所以Stan 必胜 如果输入是 10~18 ,因为Ollie 是后手,不管第一次Stan 乘的是什么,Stan肯定在 2 ~ 9 之间, 如果Stan乘以 2 ,那么Ollie就乘以 9 ,就到18了,如果Stan乘以 9 , 那么Ollie乘以…
题目大意:从1开始Stan与Ollie经行博弈,stan先手,每次将当前数乘上(2~9)间的任意数,最后一次操作后大于等于n的人获胜. 题目思路: 1-9 stan 胜 10-18 ollie胜 19-162 stan 胜 163-306 ollie胜 (stan为了接近那个数尽可能的扩大选择乘9,ollie知道自己无法在一步内获胜,为了避免stan获胜所以乘上最小的数2,接下来stan最大可以到达的数为乘上9后的数:162) -- 胜负区间对称! #include<stdio.h> #inc…
题意:两个玩家玩一个游戏,从 p = 1,开始,然后依次轮流选择一个2 - 9的数乘以 p,问你谁先凑够 p >= n. 析:找规律,我先打了一下SG函数的表,然后就找到规律了 我找到的是: 1 - 9                                 Stan wins.                         1  ~  9 10 - 18                             Ollie wins.                         …
题意: 用整数p乘以2到9中的一个数字.斯坦总是从p = 1开始,做乘法,然后奥利乘以这个数,然后斯坦,以此类推.游戏开始前,他们画一个整数1 < n < 4294967295,谁先到达p >= n,谁就是赢家. 题解: 看这一道题就会联想起来巴什博弈,但是巴什博弈是不停的从一堆石子里面往外边拿:这个是不停的累乘,我们可以采用巴士博弈类似的思想来做, 我们可以找如果谁面对9*2的次方,那么谁就会输. 因此,当n>18时,n不断地除以18,最后如果n<=9则先手必胜,否则后手必…
当日遇到月,于是有了明.当我遇到了你,便成了侣.那天,日月相会,我见到了你.而且,大地失去了光辉,你我是否成侣?这注定是个凄美的故事.(以上是废话)小t和所有世俗的人们一样,期待那百年难遇的日食.驻足街头看天,看日月渐渐走近,小t的脖子那个酸呀(他坚持这个姿势已经有半个多小时啦).他低下仰起的头,环顾四周.忽然发现身边竟站着位漂亮的mm.天渐渐暗下,这mm在这街头竟然如此耀眼,她是天使吗?站着小t身边的天使.小t对mm惊呼:“缘分呐~~”.mm却毫不含糊:“是啊,500年一遇哦!”(此后省略50…
博弈题: 题意:2 个人玩游戏,从 1 开始,轮流对数进行累乘,直到超过一个指定的值. 解题思路:如果输入是 2 ~ 9 ,因为Stan 是先手,所以Stan 必胜如果输入是 10~18 ,因为Ollie 是后手,不管第一次Stan 乘的是什么,Stan肯定在 2 ~ 9 之间,如果Stan乘以 2 ,那么Ollie就乘以 9 ,就到18了,如果Stan乘以 9 ,那么Ollie乘以大于1的数都都能超过 10 ~ 18 中的任何一个数.Ollie 必胜如果输入是 19 ~ 162,那么这个范围是…
题意:求被三个或三个以上立方体重合的体积 分析:就是平面面积的加强,不过归根还是一样的,可以把z轴按照从小向大分区间N个,然后可以得到N个平面,用平面重复三次以上的在和高度计算体积. ************************************************************************ #include<stdio.h> #include<algorithm> ; ;} }a[MAXN<<]; ;     ) )        …
题意:2 个人玩游戏,从 1 开始,轮流对数进行累乘,直到超过一个指定的值. 解题思路:如果输入是 2 ~ 9 ,因为Stan 是先手,所以Stan 必胜如果输入是 10~18 ,因为Ollie 是后手,不管第一次Stan 乘的是什么,Stan肯定在 2 ~ 9 之间,如果Stan乘以 2 ,那么Ollie就乘以 9 ,就到18了,如果Stan乘以 9 ,那么Ollie乘以大于1的数都都能超过 10 ~ 18 中的任何一个数.Ollie 必胜如果输入是 19 ~ 162,那么这个范围是 Stan…
题意略. 思路: 我们分别来考虑n取到的各个区间,从而发现其中的规律: [2,9] 明显 Stan 必胜. 但是当n = 9 + 1时,Stan无论如何也不能取胜,并且此时,假设 Stan 取值 x ,那在[10 , x * 9]这个范围内一定是Ollie必胜. Stan 一定会贪心地令x = 2,这样可以尽可能减损Ollie的必胜范围,而Ollie会使自己的数字选择成9,这样可以尽可能扩大自己的必胜范围. 所以:[10,18 = 2 * 9] Ollie 必胜 当n = 18 + 1时,Oll…
易知2-9为先手胜 继续递推下去 10-18 后手胜 再推发现19-162先手胜 即发现有9(9) 18(2*9) 162(9*2*9)..... #include<bits/stdc++.h> using namespace std; typedef long long ll; int main() { ll n; while (cin >> n) { ll p = ; ; i; i++) { ) { p *= 9LL; } else { p *= 2LL; } if (p &g…
1堆石子有n个,两人轮流取.先取者第1次可以取任意多个,但不能全部取完.以后每次取的石子数不能超过上次取子数的2倍.取完者胜.先取者负输出"Second win".先取者胜输出"First win". Input输入有多组.每组第1行是2<=n<2^31. n=0退出.Output先取者负输出"Second win". 先取者胜输出"First win".参看Sample Output.Sample Input 2…
Two players, Stan and Ollie, play, starting with two natural numbers. Stan, the first player, subtracts any positive multiple of the lesser of the two numbers from the greater of the two numbers, provided that the resulting number must be nonnegative…
题目大意: 一共有61个位置,标记为0~60.其中有10个重要位置,分别为:5, 12, 22, 29, 33, 38, 42, 46, 50 and 55. 有一个筛子,一共6个面,标有1~6.摇到几走几步,开始的位置是在0,一共可以要10次. 输入筛子摇出每个面的概率,输出经过这10个重要位置的概率. 题解: 概率DP问题,定义dp[i][j]为第i次摇筛子,处在位置j处.状态转移方程dp[i][j]=dp[i][j]+dp[i][j-k]*arr[k](1<=k<=6). 位置j处的答案…
CodeForces 429B  Working out 预处理出从四个顶点到某个位置的最大权值,再枚举相遇点,相遇的时候只有两种情况,取最优解即可. #include<iostream> #include<vector> #include<cmath> #include<map> #include<algorithm> #include<cstring> #include<cstdio> #include<cstd…
一:解决XOR常用的方法: 在vjudge上面输入关键词xor,然后按照顺序刷了一些题. 然后大概悟出了一些的的套路: 常用的有贪心,主要是利用二进制的一些性质,即贪心最大值的尽量高位取1. 然后有前缀异或和,和普通前缀和一样,可以快速得到一段区间的异或和. 当然在一颗树里面也常用前缀异或和,得到根节点到每个节点的前缀异或和,然后,两个点的前缀异或和在异或,可以得到两个点之间路线的异或和.     因为LCA到根的公共部分可以抵消(感谢Lzh提醒). Trie树,可以快速在数组里找自己的最大异或…
D - Tree of Tree ZOJ - 3201 这个题目我开始是这么定义的dp[i][j][0] dp[i][j][1] 表示对于第i个节点还有j个的选择 0 代表不选这个节点,1 代表选这个节点. 然后我写了,对题目理解出现了偏差写出来一个错误的,然后正确理解题意发现这样子写好麻烦.转移方程很难写. 上网搜题解,网上基本上都是这么定义的 dp[i][j]表示选第 i 个节点该子树的节点数为  j  的最大带权值. 所以这个就可以变成一个树形dp+01背包. 这个状态转移方程应该就是 d…
http://acm.hdu.edu.cn/showproblem.php?pid=1517 题意:每次乘上2~9..p>=n时赢.. #include <cstdio> #include <cstring> #include <map> using namespace std; typedef long long ll; map<ll, bool> h; ll n; bool dfs(ll p) { if(p>=n) return 0; if(…
Matrix multiplication Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 820    Accepted Submission(s): 328 Problem Description Given two matrices A and B of size n×n, find the product of them. b…
Find Q 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5907 Description Byteasar is addicted to the English letter 'q'. Now he comes across a string S consisting of lowercase English letters. He wants to find all the continous substrings of S, which…
http://acm.hdu.edu.cn/showproblem.php?pid=6073 题意:有个二分图,左边和右边的顶点数相同,左边的顶点每个顶点度数为2.现在有个屌丝理解错了最佳完美匹配,它以为最佳完美匹配是边权的乘积了,现在要你计算所有这种最佳完美匹配的边权乘积和.保证至少存在一个完美匹配. 思路: 这道题目虽然打着二分图的幌子,但其实吧,根本就不是二分图,哎. 对于右边的点来说,如果它的度数为1,那么与它匹配的点肯定是确定的,所以我们先通过拓扑排序来计算出所有确定的匹配.去除这些点…