傳送門 這題的
關鍵在於
,如果一
直和對手
取相反方
向的位置
\color這題的關鍵在於,如果一直和對手取相反方向的位置
這題的關鍵在
於,如果
一直和對
手取相反
方向的位
置 最 後得
到的位置
會是乙個
定值,根
據這個去
分類討論
。\color最後得到的位置會是乙個定值,根據這個去分類討論。
最後得到的位
置會是一
個定值,
根據這個
去分類討
論。假設需要進行k
kk個完整回合
下面規定x−y
x-yx−
y為索引x
xx開頭長y
yy的串(索引從1起)
規定逆向的含義為:和另乙個人取相反的方向
(先手不希望串變成t,後手希望)
回合數k
kk為奇數時,最後乙個操作是先手當[k+
1,k+
∣t∣]
[k+1,k+|t|\ ]
[k+1,k
+∣t∣
]等於t
tt且[k+
2,k+
∣t∣+
1]
[k+2,k+|t|+1]
[k+2,k
+∣t∣
+1]等於ttt
如果後手一直逆向,最後輪到先手時一定剩下[k+
1,k+
∣t∣+
1]
[k+1,k+|t|+1]
[k+1,k
+∣t∣
+1]
此時先手選前面還是後面都沒用,那麼後手必勝
否則,先手必勝。
因為上面[k+
1,k+
∣t∣]
[k+1,k+|t|]
[k+1,k
+∣t∣
]或[k+1
,k+∣
t∣+1
][k+1,k+|t|+1]
[k+1,k
+∣t∣
+1]至少乙個不滿足
假設是[k+
1,k+
∣t∣]
[k+1,k+|t|]
[k+1,k
+∣t∣
]不滿足,那麼先手第一步先取後面的部分
然後以後的每一步都逆向,這樣最後一定剩下[k+
1,k+
∣t∣]
[k+1,k+|t|]
[k+1,k
+∣t∣
] 假設是[k+
1,k+
∣t∣+
1]
[k+1,k+|t|+1]
[k+1,k
+∣t∣
+1]不滿足,同理。
回合數k
kk為偶數時,最後乙個回合是後手,都可以走k步
可以前k−1
k-1k−
1步後手一直逆向
假如滿足xxx
txxx
***t***
xxxtxx
x的形式(t左邊右邊相等),後手只需要一直逆向就能贏
但是最後一步也可以不逆向,和先手同向
此時需要同時滿足xtx
xx
xt***
xt***和xxx
tx
***tx
xxxt
x(兩邊剛好差兩個字元),後手也是必勝的
否則先手必勝。
因為如果[k,
k+∣t
∣−1]
[k,k+|t|-1]
[k,k+∣
t∣−1
]不等於t
tt的話,只需要把最後乙個刪掉
以後每一步模仿後手,那麼最後會剩下[k,
k+∣t
∣]
[k,k+|t|\ ]
[k,k+∣
t∣]留給後手
此時刪掉左邊或者右邊都是無濟於事的.
#include
using
namespace std;
typedef
unsigned
long
long ull;
const
int maxn =
500009
;const ull base =
131;
ull h[maxn]
,p[maxn]
;char t[maxn]
,s[maxn]
;ull get
(int l,
int r)
intmain()
else
}}
牛客練習賽46 華華跟奕奕玩遊戲(期望 逆元)
有乙個箱子,開始時有n個黑球,m個藍球。每一輪遊戲規則如下 第一步 奕奕有p的概率往箱子裡新增乙個黑球,有 1 p 的概率往箱子裡新增乙個藍球。第二步 華華隨機從箱子裡取出乙個球。華華喜歡黑球,他想知道k輪遊戲之後箱子裡黑球個數的期望。輸入五個整數n,m,k,a,b。1 n,m 1e6,1 k 1e...
牛客練習賽7 骰子的遊戲(水)
在alice和bob面前的是兩個骰子,上面分別寫了六個數字。alice和bob輪流丟擲骰子,alice選擇第乙個骰子,而bob選擇第二個,如果誰投擲出的數更大,誰就可以獲勝。現在給定這兩個骰子上的6個數字,你需要回答是alice獲勝機率更大,還是bob獲勝機率更大。請注意獲勝機率相同的情況 第一行乙...
牛客練習賽23 F 托公尺的遊戲 (爆搜 逆元)
題目 思路 其實輪數的期望就是每個點被選中的期望,我們可以發現我們選這個點要在他到根的路徑上的點集中第一次選中 不然他 就被砍掉了 就是直接求他的深度即可。期望就是1 dep i 之和。include using namespace std const int n 1e5 10 const int ...