ACM-博弈论
但求-_-心安
充满鲜花的世界到底在那里,如果他真的存在那么我一定会去。
展开
-
poj 2484
#include #include #include #define MAX 1000010 #define N 100010 using namespace std; /* 只要n>2 bob 和Alice采取相同的策略就能胜利 */ int main() { int n; while(~scanf("%d",&n)&&n) { if(n<=2)printf("原创 2017-03-02 14:41:37 · 439 阅读 · 0 评论 -
poj 2348
#include #include #include #define MAX 1000010 #define N 100010 using namespace std; int main() { int a,b; while(~scanf("%d%d",&a,&b)) { if(a==0||b==0)break; bool f=1; while(1)原创 2017-03-02 15:13:53 · 326 阅读 · 0 评论 -
nim博弈
nim取石子游戏, 有n堆石子,每堆有ai个石子,A和B轮流从非空的堆中取走至少一个石子。A先取,取光所有石子的一方获胜。当双方都采取最优策略时,谁能取胜? 1 1 a1 XOR a2 XOR……XOR an !=0 ->必胜态 a1 XOR a2XOR……XOR an==0 ->必败态 取走一个石子 必胜态就是必败态了。 必败态的二进制为1。从相应的石头堆取走相应的石子原创 2017-03-02 15:32:46 · 287 阅读 · 0 评论 -
poj 1704 Georgia and Bob
转化为nim博弈。如果是偶数两两组合。如果一个人把前面的棋子往左移动,另一个人把后面的棋子也往左移动。是一样的。 如果是奇数 就加一个为0 的堆,两两组合 #include #include #include #include #define MAX 1009 using namespace std; int a[MAX]; int main() { int t; scan原创 2017-03-02 16:10:50 · 229 阅读 · 0 评论 -
poj 2311 Cutting Game
开始确实智障了TLE好几次,发现是记忆化搜索的数组每次都重置了。。。。。原创 2017-03-02 17:56:43 · 342 阅读 · 0 评论 -
高僧斗法 蓝桥杯
博弈题,nim博弈 #include #include #include #include #include #define MAX 250 using namespace std; int main() { char s; int a[1004]; while(1) { int len=0; while(1) { scanf("%原创 2017-03-02 19:28:46 · 408 阅读 · 0 评论 -
POJ 1067 取石子游戏(威佐夫博弈)
这个黄金分割数是重点。。。 #include #include #include using namespace std; const double q = (1 + sqrt(5.0)) / 2.0; // 黄金分割数 int Wythoff(int a, int b) { if (a > b) swap(a, b); int k = b - a; i原创 2017-04-27 16:33:05 · 244 阅读 · 0 评论 -
A New Stone Game POJ 1740
*题目大意: 参考:http://blog.csdn.net/zhang20072844/article/details/8113381 * 对于n堆石子,每堆若干个,两人轮流操作,每次操作分两步, * 第一步从某堆中去掉至少一个,第二步(可省略)把该堆剩余 * 石子的一部分分给其它的某些堆。最后谁无子可取即输。 *解题思路: * 1、先考虑1堆的时候,1堆当然是N点(必胜点), *原创 2017-04-27 17:02:53 · 245 阅读 · 0 评论