一道互動練習題

2021-10-01 07:55:38 字數 1001 閱讀 5987

)的做法:

考慮逐位確定:對於每個位置,往後列舉有沒有位置可以使得正確位置更多,如果有,那麼有兩種情況,1是這個位置被放到了正確的位置,2是這個位置本來應該放的數被放來了

這裡的重點是我們需要區分1和2:

具體的做法是記下讓這個位置答案正確位置數變大的2個位置,將其和i一起移位

這裡是手繪示意圖.即把p1放到i,p2放到p1,將i放到p2,然後再次詢問

如果返回值和什麼都不做相比變小或相等:

說明i這個位置應該放p2,p1這個位置應該放i

否則:說明i這個位置應該放p1,p2這個位置應該放i

證明考慮討論p1還是p2應該放在i上

#include

"game.h"

using

namespace std;

std :: vector<

int>

guess

(int n,

int limit)

next_permutation

(ans.

begin()

,ans.

end())

;}}for

(int i=

0;i)swap

(ans[i]

,ans[j]);

if(pos2!=-1

)break;}

if(pos1==-1

)continue;if

(pos2==-1

)else

else}}

return ans;

}

一道fft練習題

考場上想到的o n 2 o n 2 o n2 暴力 記f i j f i j f i j 表示前i個位置,長度為j的連擊出現的期望次數 記g i j g i j g i j 表示第到i個位置為止,目前連擊次數為j的概率 轉移時有一些細節 include using namespace std con...

一道sam練習題

考慮答案實際上是每個子串的出現次數的平方和.這個可以通過手玩樣例驗證.考慮廣義sam 先將所有字串建成trie,然後再在trie上bfs,建出sam.考慮fail樹 每次插入乙個新節點,會改變從這個節點開始到根的路徑上的每個節點的right集合大小.所以考慮樹剖維護這種操作,然後每乙個單詞的答案就是...

一道線段樹練習題

e9首先我們有乙個考慮列舉每個mex,計算其貢獻的想法.即有多少個區間的mex mexme x是我們當前列舉的這個值.然後我們手畫一下圖,可以發現,乙個數如果想要成為乙個區間的mex mexme x,必須要這個區間已經出現了所有比它小的數.所以可以從小到大列舉mex mexme x,然後用r rr陣...