5507 清華冬令營2018模擬 取石子

2021-10-09 09:44:10 字數 2320 閱讀 9988

直接說做法了,挺好理解的。

欽定a ≤b

a\le b

a≤b。

設r =x

mod(

a+b)

r=x\mod (a+b)

r=xmod

(a+b

)。分四種情況討論:

r ∈[

0,a−

1]

r\in [0,a-1]

r∈[0,a

−1]。這個情況沒有意義。

r ∈[

a,b−

1]

r\in [a,b-1]

r∈[a,b

−1]。這個情況下,a

aa能多走一步而b

bb不能,所以只要出現了這個情況a

aa必勝。

r ∈[

b,2a

−1

]r\in [b,2a-1]

r∈[b,2

a−1]

。這個情況下,兩個人都能各走一步。所以這個情況相當於改變先後手順序。

r ∈[

2a,a

+b−1

]r\in [2a,a+b-1]

r∈[2a,

a+b−

1]。這個情況下,a

aa能多走至少2

22步,b

bb能多走至少1

11步。如果b

bb先手,相當於有個情況3

33;如果a

aa先手,a

aa必勝。如果這個情況出現了兩次,那麼a

aa無論先手後手都必勝。

可能bb

b和2a

2a2a

的大小關係會有問題,但是沒有太大關係。(按照**中的那樣分類就是了)

答案先乘上2cn

t1

2^2c

nt1。

計算先手必勝和後手必勝的方案:

先手必勝:∑im

od2=

1(cn

t3i)

+∑im

od2=

0(cn

t3i)

cnt4

\sum_ \binom+\sum_\binomcnt4

∑imod2

=1​(

icnt

3​)+

∑imo

d2=0

​(ic

nt3​

)cnt

4後手必勝:∑im

od2=

0(cn

t3i)

\sum_ \binom

∑imod2

=0​(

icnt

3​)(這裡沒有cnt

4cnt4

cnt4

的原因是如果有a

aa必勝)

using

namespace std;

#include

#include

#include

#define n 100010

#define mo 1000000007

#define ll long long

ll qpow

(ll x,ll y=mo-2)

ll fac[n]

,ifac[n]

;ll c

(int m,

int n)

void

initc

(int n)

int n,a,b;

int x[n]

;ll ansa,ansb,ansf,anss;

void

work()

for(

int i=

0;i<=cnt3;

++i)

if(i&1)

(ansf+=c

(cnt3,i))%

=mo;

else

ll tmp=

qpow(2

,cnt1)

;(ansf*

=tmp)

%=mo;

(anss*

=tmp)

%=mo;

ansa=

(qpow(2

,n)-ansf-anss+mo+mo)

%mo;

}int

main()

else

work()

;printf

("%lld %lld %lld %lld\n"

,ansa,ansb,ansf,anss)

;return0;

}

清華2019冬令營模擬12 8 視野

計算幾何弱渣果然就是一點感覺也沒有。首先考慮不刪怎麼做?肯定要把點給離散,那麼現在對於每一小段,要求出是哪條線段最近?按乙個順序掃過去,每一條線段打乙個加入和刪除的標記。由於線段互不相交,所以線段順序不會隨著小段的移動而改變。因此,我們可以用乙個set去維護插入刪除,比較遠近時,就求交,判斷誰近。那...

位元組跳動冬令營2018

給定一棵有根樹,邊有邊權,兩個人輪流操作,每次可以把一條邊的權值減少一,權值變為 0 表示把子樹砍掉,問先手第一輪操作哪些邊使得自己必勝。n 1 06 n leq 10 6 n 10 6之前的部落格,發現這道題本質上是圖的刪邊遊戲。把環縮掉,就變成了樹上刪邊遊戲了。結論是 葉子的 sg 為 0,非葉...

2018北京冬令營測試

題面戳我!我們發現 所有數加起來等於線索上的權值 這個東西可以用流量平衡來解決,所以可以跑上下界費用流。建圖就是,把上下線索放左邊,左右線索放右邊,源點向所有上下線索連乙個上下界均為對應權值的邊,同理左右線索向匯點連乙個上下界均為對應權值的邊 對於空格就是把左邊的乙個節點和右邊的乙個節點連起來,上下...