2973 石頭遊戲

2021-08-31 03:52:40 字數 1585 閱讀 1686

給出乙個方格陣,初始每個格仔中都沒有石頭,然後每個格仔都有乙個操作序列,並且每時刻執行乙個,迴圈執行,序列長度小於等於6,問t時刻後石頭個數最多的格仔中有幾個石頭。

因為操作序列長度小於等於6,所以每60次操作必有一次迴圈,所以可以對60次操作建乙個矩陣,由60次操作相乘,矩陣的長寬均為方格矩陣的元素總數,操作均可以用矩陣中的數字來表示,其中0號點用來表示所有石頭的源頭,然後矩陣快速冪即可。

#include

#include

#include

#define ll long long

#define n 70

using

namespace std;

ll m,n,tot,t,k,ans,num[n]

[n],len[n]

;char cz[n]

[n];

struct jz

jz operator*(

const jz &u)

const}}

return res;

}void

out(

)puts(""

);}puts(""

);}}qz[n]

,jz;

inline ll zh

(ll u,ll v)

inline jz po

(jz u,ll v)

return res;

}int

main()

}for

(i=1

;i<=k;i++

)for

(i=0

;i<=tot;i++

) qz[0]

.num[i]

[i]=1;

for(i=

1;i<=

60;i++

)else

if(t==

'n'&&j>

1) qz[i]

.num[

zh(j,k)][

zh(j-

1,k)]=

1;else

if(t==

's'&&j.num[

zh(j,k)][

zh(j+

1,k)]=

1;else

if(t==

'e'&&k.num[

zh(j,k)][

zh(j,k+1)

]=1;

else

if(t==

'w'&&k>

1) qz[i]

.num[

zh(j,k)][

zh(j,k-1)

]=1;

}}qz[i]

=qz[i-1]

*qz[i];}

jz.num[0]

[0]=

1;jz=jz*

po(qz[60]

,t/60

)*qz[t%60]

;for

(i=1

;i<=tot;i++

) ans=

max(ans,jz.num[0]

[i])

; cout<}

877 石頭遊戲

亞歷克斯和李用幾堆石子在做遊戲。偶數堆石子排成一行,每堆都有正整數顆石子piles i 遊戲以誰手中的石子最多來決出勝負。石子的總數是奇數,所以沒有平局。亞歷克斯和李輪流進行,亞歷克斯先開始。每回合,玩家從行的開始或結束處取走整堆石頭。這種情況一直持續到沒有更多的石子堆為止,此時手中石子最多的玩家獲...

2 石頭遊戲(坑爹)

題目抽象 一堆石子兩個人輪流取,每次至少要取走乙個。先取的人第一次可以取任意多個,但是不能全部取完。之後每個人取石子時,能取的數目最多不能超過對手剛才取的石子數的k倍 k為給定常量 取走最後乙個石子的人算贏。在兩個人都以最優策略進行遊戲時,先手要麼必勝要麼必負,必勝還是必負取決於一開始有多少個石子,...

11 石頭 剪刀 布遊戲

bin bash 編寫指令碼,實現人機 石頭,剪刀,布 遊戲 game 石頭 剪刀 布 num random 3 computer 通過隨機數獲取計算機的出拳 出拳的可能性儲存在乙個陣列中,game 0 game 1 game 2 分別是 3 中不同的可能 echo 請根據下列提示選擇您的出拳手勢 ...