SDOI2016 硬幣遊戲

2022-03-27 00:54:44 字數 1124 閱讀 9685

題目

翻硬幣遊戲啊

首先對於這類遊戲只要滿足如下的規則,就可以用一種特殊的方式解決了

我們假定只能翻正面朝上的硬幣

我們可以根據某些約束條件的翻硬幣(一次反掉連續幾個,或者具有某些特殊性質的),但是翻掉的硬幣中最右邊的那個比如是從正面反到反面

誰不能翻硬幣了誰輸

對於滿足這樣的特徵的硬幣遊戲,我們有這樣乙個定理:局面的\(sg\)函式等於局面中每乙個正面朝上的硬幣單獨存在的局面的\(sg\)函式的異或和

去**裡偷了一張圖,大概就是這個樣子

對於這個題我們能翻動的是反面朝上的硬幣,所以我們求一下所有反面朝上的硬幣但對存在的時候的\(sg\)函式,求乙個異或和就好了

我們發現這個題硬幣翻動情況,只和這個硬幣的位置\(x\)分解成\(x=2^a\times 3^b\times c\)時候的\(a,b\)有關係

於是我們可以設\(sg[a][b]\)表示一枚位於\(=2^a\times 3^b\times c\)的硬幣單獨存在的\(sg\)函式值

於是我們按照題意模擬一下這個硬幣能轉移到的局面,取乙個\(mex\)就好了

**

#include#include#include#include#define re register

#define ll long long

#define max(a,b) ((a)>(b)?(a):(b))

#define min(a,b) ((a)

inline int read()

int t,n,m,m;

int sg[16][15],tax[100005];

inline void pre()

for(re int p=1;p<=b;p++)

for(re int q=1;q<=m&&p*q<=b;q++)

while(tax[sg[a][b]]==m) sg[a][b]++;

}}int main()

puts(ans?"win":"lose");

} return 0;

}

SDOI2016 遊戲題解

這道題太噁心了,調了我整整一晚上,結果發現是乙個bi 錯誤,多多捂臉 這道題比之前的題多了乙個初始化和區間查詢的操作,主要是區間查詢噁心 因為要區間查詢,所以必須維護區間最低點,修改和查詢操作被改得面目全非。我們要維護的話,必須從現值,子值,新值,具體的不好多說 看 吧 include define...

洛谷 SDOI2016 遊戲

初見安 這裡是傳送門 洛谷p4069 sdoi2016 遊戲 這題真的是咕了好幾個月了終於過了,然後又咕了幾個星期才來寫部落格 題意很簡單,每次讓你在一條路徑上放乙個等差數列,問你某點上數的最小值。這就是乙個李超線段樹的模板題了。我們樹上利用樹剖開一棵線段樹,維護每一段等差序列的最小值就好。接下來看...

SDOI2016 數字配對

傳送門 裸費用流。建邊 對於a i a j pr ime a j a i frac prime a j a i a j a i prim e a j a i 需要i ii向j n j nj n連,並且j jj向i n i ni n連。費用即為c i c j c i c j c i c j 流量無窮大...