随笔分类 -  博弈论

1
UVa 10561 - Treblecross
摘要:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1502博弈 SG 不可以使出现 XX 或者 X.X的情况,这样下一个人就赢了枚举每个.将其变成X 看是否可以让对手输1,已经出现了 XXX 对手已输2,如果正好出现了 XX 或者 X.X 对手赢3,如果一个地方的.变成X 不会出现XX或者X.X 把这些地方分成一个个的段 SG代码:#include #include #include #include #include #inclu 阅读全文
posted @ 2013-07-09 15:53 夜-> 阅读(289) 评论(0) 推荐(0)
LA 5059 - Playing With Stones
摘要:博弈 SG 由于每个a太大,没有办法递推,但是可以找规律a为偶数 SG(a)=a/2a为奇数 SG(a)=SG(a/2)代码:#include #include #include #include #include #include #include #define ll long long#define lint long longusing namespace std;const int N=4000005;ll F(ll a){ if(a==1) return 0; if((a&1)==0) return (a>>1); return F(a>>1);}i 阅读全文
posted @ 2013-07-09 10:20 夜-> 阅读(239) 评论(0) 推荐(0)
D. Yet Another Number Game
摘要:http://codeforces.com/contest/282/problem/D理解上去并不难 就是 博弈论 用 dp 实现但是用记忆化搜索时间复杂度太高 需要用递推 用奇异状态去更新非奇异状态 没被更新到的就是奇异状态这样的话只有奇异状态才去更新 奇异状态相比非奇异状态要少很多 所以节约了大量时间代码:#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<vector>#includ 阅读全文
posted @ 2013-03-14 12:29 夜-> 阅读(277) 评论(0) 推荐(0)
1045. Funny Game
摘要:http://acm.timus.ru/problem.aspx?space=1&num=1045简单博弈代码:#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<vector>#include<queue>#include<map>#include<stack>#include<algorithm>#include<cmath>using namespace std; 阅读全文
posted @ 2012-10-18 20:25 夜-> 阅读(201) 评论(0) 推荐(0)
1282. Game Tree
摘要:http://acm.timus.ru/problem.aspx?space=1&num=1282简单博弈 注意题意的理解代码:#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<vector>#include<queue>#include<map>#include<stack>#include<algorithm>#include<cmath>using namesp 阅读全文
posted @ 2012-10-18 19:44 夜-> 阅读(193) 评论(0) 推荐(0)
1195. Ouths and Crosses
摘要:http://acm.timus.ru/problem.aspx?space=1&num=1195题目很简单 但是写了一下午 原因是理解错了题意 (英语不好,伤不起呀)题目大意:以五子棋为背景 这不过这里是 "三子棋" 而且每个人已经走了三步问剩下的 两个人都选择最优走法 谁获胜 还是平局代码:#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<vector>#include<queue>#inc 阅读全文
posted @ 2012-10-18 17:43 夜-> 阅读(252) 评论(0) 推荐(0)
1087. The Time to Take Stones
摘要:http://acm.timus.ru/problem.aspx?space=1&num=1087简单博弈 + dp(记忆化搜索)代码:#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<vector>#include<queue>#include<map>#include<stack>#include<algorithm>#include<cmath>using na 阅读全文
posted @ 2012-10-18 11:16 夜-> 阅读(222) 评论(0) 推荐(0)
1023. Buttons
摘要:http://acm.timus.ru/problem.aspx?space=1&num=1023简单博弈代码:import java.util.*;import java.math.*;public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n; while (in.hasNext()) { n=in.nextInt(); int ans=n; for(int i=1;i<=Math.sqrt(n);++i){ if(n%... 阅读全文
posted @ 2012-10-18 09:19 夜-> 阅读(195) 评论(0) 推荐(0)
1180. Stone Game
摘要:http://acm.timus.ru/problem.aspx?space=1&num=1180简单博弈 把前16个写出来就会发现 3 的倍数是奇异状态 因为 3 的倍数不可能为 2^k 要证明 3 的倍数为奇异状态 可以用数学归纳法。代码:import java.util.*;import java.math.*;public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); BigInteger n, m; BigInteger k = new Bi 阅读全文
posted @ 2012-10-17 16:47 夜-> 阅读(155) 评论(0) 推荐(0)
hdu 1809 A New Tetris Game(2)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1809这个题是 “A New Tetris Game” 的升级版第一 需要用SG处理第二 需要记录状态由于有多个棋盘 所以要对应到 S-Nim 里面的值 而且数据变多了 简单的dfs会超时,需要记录状态,我是用map< , >来记录的代码:#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<vector>#include<queue& 阅读全文
posted @ 2012-10-17 11:04 夜-> 阅读(215) 评论(0) 推荐(0)
hdu 1524 A Chess Game
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1524博弈 用SG处理#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<vector>#include<queue>#include<map>#include<stack>#include<algorithm>#include<cmath>using namespace std;//#pra 阅读全文
posted @ 2012-10-17 09:38 夜-> 阅读(161) 评论(0) 推荐(0)
hdu 1760 A New Tetris Game
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1760dfs+ 博弈代码:#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<vector>#include<queue>#include<map>#include<stack>#include<algorithm>#include<cmath>using namespace std;//#p 阅读全文
posted @ 2012-10-16 21:44 夜-> 阅读(134) 评论(0) 推荐(0)
hdu 1729 Stone Game
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1729SG处理 博弈在 容量为 c ,现有数量为 s 的情况下特殊情况:s==0 则 return 0; 否则:找到一个整数 t ,t 满足 t+t*t<c 而已 (t+1)+(t+1)*(t+1)>=c ,这样的话 从 t+1 到 c-1 都为必胜态 而 s==c 时为必败态只要 s 在 t+1 <= s <= c 它对应到S-Nim里面的 值就是 c-s因为 这时的 s 可以到达 s-1,s-2,s-3,.......,c. 归纳一下的话 就是 c-s但如果 s <= t 则 阅读全文
posted @ 2012-10-16 20:41 夜-> 阅读(182) 评论(0) 推荐(0)
hdu 1536 S-Nim
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1536S-Nim 博弈 需要用SG 处理最简单的S-Nim博弈是 每一堆可以任取正整数个 比如说 k 可以变成 k-1,k-2,k-3,······0本题所可以取的数量有了限制 所以要SG处理 把原始数量可以对应到 S-Nim 里面的数量 是多对一的关系如果原始数量n取过之后可以变成 S-Nim 里面的0,1,2,3,4,····· k-1 而没有 k 的话 那么n就对应到 S-Nim里面的 k然后就 阅读全文
posted @ 2012-10-15 22:04 夜-> 阅读(199) 评论(0) 推荐(0)
hdu 1404 Digital Deletions
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1404DP + 博弈论找奇异状态 能到达奇异状态的为 非奇异状态 怎么走都到非奇异状态的为奇异状态代码:#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<vector>#include<queue>#include<map>#include<stack>#include<algorithm>using 阅读全文
posted @ 2012-10-10 10:35 夜-> 阅读(138) 评论(0) 推荐(0)
toj 1017. Number Game
摘要:http://202.113.2.5:57778/toj/showp1017.htmlDP (状态压缩+记忆化搜索) + 博弈论基本思路:用状态压缩表示 那些是还可以选的 哪些是不可以选的在更新过程中 标记 是否是奇异状态代码及其注释:#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<vector>#include<queue>#include<map>#include<stack>#include 阅读全文
posted @ 2012-10-09 20:18 夜-> 阅读(187) 评论(0) 推荐(0)
toj 1410. Euclid's Game
摘要:http://202.113.2.5:57778/toj/showp1410.html找奇异状态代码:import java.util.*;import java.math.*;public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n, m; while (true) { n = in.nextInt(); m = in.nextInt(); if (n == 0 && m == 0) { break; } int... 阅读全文
posted @ 2012-10-09 16:36 夜-> 阅读(137) 评论(0) 推荐(0)
hdu 2147 kiki's game
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=2147关键在于找奇异状态 (1,1) 是奇异状态 可以一步道奇异状态的 为非奇异状态 必须到非奇异状态的是奇异状态代码:import java.util.*;import java.math.*;public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n, m; while (true) { n = in.nextInt(); m = in.next... 阅读全文
posted @ 2012-10-08 20:05 夜-> 阅读(124) 评论(0) 推荐(0)
hdu 1850 Being a Good Boy in Spring Festival
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1850#include<iostream>#include<cmath>#include<string>#include<algorithm>#include<cstring>#include<cstdio>using namespace std;int a[105];int main(){ int n; while(cin>>n) { if(n==0) break; int sum=0; for(int i=1;i<= 阅读全文
posted @ 2012-05-11 10:09 夜-> 阅读(150) 评论(0) 推荐(0)
hdu 1846 Brave Game
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1846最简单的博弈论#include<iostream>#include<cmath>#include<string>#include<algorithm>#include<cstring>#include<cstdio>using namespace std;int main(){ int C; cin>>C; while(C--) { int n,m; cin>>n>>m; if(n%(m+1)== 阅读全文
posted @ 2012-05-11 08:58 夜-> 阅读(147) 评论(0) 推荐(0)

1