日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

HDOJ 2176 取石子游戏

發(fā)布時(shí)間:2025/3/15 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HDOJ 2176 取石子游戏 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

來(lái)源:http://blog.csdn.net/jqandjq/archive/2009/02/27/3943422.aspx


有若干堆各若干個(gè)物品,兩個(gè)人輪流從某一堆取任意多的物品,規(guī)定每次至少取一個(gè),多者不限,最后取光者得勝。

相關(guān)的經(jīng)典例題:http://acm.hdu.edu.cn/showproblem.php?pid=2176

這種情況最有意思,它與二進(jìn)制有密切關(guān)系,我們用(a,b,c)表示某種局勢(shì),首先(0,0,0)顯然是奇異局勢(shì),無(wú)論誰(shuí)面對(duì)奇異局勢(shì),都必然失敗。第二種奇異局勢(shì)是(0,n,n),只要與對(duì)手拿走一樣多的物品,最后都將導(dǎo)致(0,0,0)。仔細(xì)分析一下,(1,2,3)也是奇異局勢(shì),無(wú)論對(duì)手如何拿,接下來(lái)都可以變?yōu)?#xff08;0,n,n)的情形。

計(jì)算機(jī)算法里面有一種叫做按位模2加,也叫做異或的運(yùn)算,我們用符號(hào)(+)表示這種運(yùn)算。這種運(yùn)算和一般加法不同的一點(diǎn)是1+1=0。先看(1,2,3)的按位模2加的結(jié)果:

1 =二進(jìn)制01

2 =二進(jìn)制10

3 =二進(jìn)制11 (+)

———————

0 =二進(jìn)制00 (注意不進(jìn)位)

對(duì)于奇異局勢(shì)(0,n,n)也一樣,結(jié)果也是0。

任何奇異局勢(shì)(a,b,c)都有a(+)b(+)c =0。

如果我們面對(duì)的是一個(gè)非奇異局勢(shì)(a,b,c),要如何變?yōu)槠娈惥謩?shì)呢?假設(shè) a < b< c,我們只要將 c 變?yōu)?a(+)b,即可,因?yàn)橛腥缦碌倪\(yùn)算結(jié)果: a(+)b(+)(a(+)b)=(a(+)a)(+)(b(+)b)=0(+)0=0。要將c 變?yōu)閍(+)b,只要從 c中減去 c-(a(+)b)即可。

?

?

代碼 1 #include <iostream>
2 ?using namespace std;
3
4 ?int main()
5 {
6 int a[200005];
7 int n, i, j, t, p, flag;
8
9 while (scanf("%d", &n) != EOF && n)
10 {
11 p = flag = 0;
12 for (i = 0; i < n; i++)
13 scanf("%d", a + i), p ^= a[i];
14 for (i = 0; i < n; i++)
15 {
16 t = p ^ a[i]; //t=a[0](+)a[1]...a[n-1] 異或
17 ? if (t < a[i])
18 {
19 if (!flag) puts("Yes");
20 printf("%d %d\n", a[i], t);
21 flag = 1;
22 }
23 }
24 if (!flag) puts("No");
25 }
26 }

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/touchsunlight/archive/2010/03/20/1690401.html

總結(jié)

以上是生活随笔為你收集整理的HDOJ 2176 取石子游戏的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。