模擬賽 nodgd的猜球遊戲

2022-06-29 22:21:12 字數 1189 閱讀 4472

nodgd和p6pou在玩猜球遊戲,nodgd首先準備了10個小球,小球的編號從0~9。首先nodgd把這10個球按照從左到右編號為0,1,2,3...9的順序擺在了桌子上,接下來nodgd把這10個球用10個不透明的杯子倒扣住。

nodgd接下來會按照一定的操作順序以極快的速度交換這些杯子。

換完以後他問p6pou你看清楚從左到右的杯子中小球的編號了麼?

由於p6pou的動態視力不是很好,所以她跑來向你求助。你在調查後發現nodgd置換杯子其實是有一定原則的。

具體來講,nodgd有乙個長度大小為n的操作序列。

操作序列的每一行表示一次操作都有兩個非負整數a,b,表示本次操作將會交換從左往右數第a個杯子和從左往右數第b個杯子(a和b均從0開始數)。請注意是換杯子,而不是直接交換a號球和b號球。

nodgd和p6pou一共玩了m次猜球遊戲,在每一輪遊戲開始時,他都將杯子中的小球重置到從左往右依次為0,1,2,3...9的狀態。

然後在第i輪遊戲中nodgd會按照操作序列中的第個操作開始做,一直做到第個操作結束(和的編號從1開始計算)。

由於你提前搞到了nodgd的操作序列以及每一次遊戲的l,r。請你幫助p6pou回答出nodgd每一輪遊戲結束時,從左至右的杯子中小球的編號各是多少。

資料範圍:\(1 \leq n,m \leq 10^5,0 \leq a,b \leq 9 ,1 \leq l\leq r \leq n\)

簡而言之,本題給出了乙個原序列和操作序列,操作為交換兩個數的位置,詢問執行\(l\)到\(r\)的操作後的結果。

我們考慮到執行同一操作後改變的只是其中兩個值,可以考慮字首和的思路,記錄執行從1到r的結果,再通過結果陣列求出1到\(l - 1\)的逆元操作,設\(k[i]\)表示\(l - 1\)次操作的第\(i\)項移動的位置,那麼只需將第\(r\)次操作的序列移動到k[i]即可,所以答案為\(k[當前位r次操作的位置]\)

#include using namespace std;

const int maxn = 4e5 + 5;

#define r register

typedef long long ll;

int a[maxn],f[maxn][15],k[maxn];

int main()

for(r int i = 1;i <= m; i++)

return 0;

}

模擬賽 nodgd的猜球遊戲

nodgd和p6pou在玩猜球遊戲,nodgd首先準備了10個小球,小球的編號從0 9。首先nodgd把這10個球按照從左到右編號為0,1,2,3.9的順序擺在了桌子上,接下來nodgd把這10個球用10個不透明的杯子倒扣住。nodgd接下來會按照一定的操作順序以極快的速度交換這些杯子。換完以後他問...

NOIP 2015模擬賽 nodgd題 題解 總結

第一題一輩子過不了系列 這次考試又學到了許多新東西,受益匪淺 但是成績依舊不夠理想,第一題又炸了,明明好好的一道打表題都打錯了,身敗名裂 以後還是繼續鞏固一下這些零零散散的知識,否則考試犯了錯找不出來要浪費好多時間 好數 問題描述 nodgd認為,如果乙個數的三進製表示裡數字1的個數和數字2的個數一...

藍橋杯模擬賽 猜算式

第一次參加比賽,感覺之前學的好多東西都不知道怎麼用,感覺準備很不充分。但是我還是想去拼一下,大不了明年接著刷,保研保本校跟著院長混。廢話不說,直接發出 暴力破解,其中 塊複製貼上了很多,很容易的思路。通俗易懂。由於我之前做過不少工程專案,我非常不習慣競賽當中毫無意義的變數,這玩意遇到難題給你 你都看...