Atcoder AGC005 解題報告

2022-08-19 00:27:07 字數 1939 閱讀 6905

有乙個字串\(x\),對它進行操作。

該串只含\(s\)和\(t\),凡是\(s\)與\(t\)連在一起都要將它們一起去掉。

現在進行若干次操作直到該串中沒有連在一起的\(st\),問剩下的長度。

考慮用對頂棧模擬。

先將所有的字串加入右棧中。

依次將乙個字元從右棧中彈出,加入左棧。

如果在任意時刻,出現了左棧頂是\(s\)而右棧頂是\(t\),那麼就兩個棧都彈出棧頂。

容易發現這樣一定可以將所有的\(st\)刪完。

給出乙個排列,求所有的區間的最小值的和。

考慮用單調棧求出每乙個數作為最小值能夠向左和右拓展的距離\(l_i\)和\(r_i\)。

那麼答案就是\(\sum_^p_i \times l_i \times r_i\)。

給出乙個序列,按要求構造一棵樹。

滿足樹中,所有點到第\(i\)個點的距離最遠是\(a_i\)。

看到最遠距離,就想直徑。

根據常識(直徑的定義),到乙個點最遠的點一定是直徑的端點。

那麼我們就能夠發現,給出的序列排序之後,最小的數要等於最大的數的一半。

而且其他的數字要連續且每乙個數字要出現兩次。

特殊的,如果直徑長度是偶數,那麼最小的數只能出現一次。

如果直徑長度是奇數,那麼最小的數只能出現兩次。

這麼一番判斷,就行了。

如果乙個排列\(p\)滿足對於所有的\(i\)都有\(|p_i-i|\neq k\),則稱排列\(p\)為合法的。現給出\(n\)和\(k\),求有多少種合法的排列。

由於答案很大,請輸出答案對\(924844033\)取模的結果。

拿到題目,考慮容斥。

考慮求出乙個\(g_i\)表示至少有\(i\)個位置不滿足要求的方案數。

那麼答案\(ans = \sum_^(-1)^i g[i]\)。

我們建出乙個二分圖,上下兩排都是\(n\)個點,其中上排代表下標,下排代表排列的值。

那麼我們不滿足要求就是要某一些位置\(|p_i - i| = k\),這樣我們可以練出若干條鏈。

之後我們發現每一條鏈是類似的,所以我們只用考慮其中一條鏈。

設\(f[i][j][0/1]\)表示某一條鏈,考慮了前\(i\)個點,選了\(j\)條邊,而且最後的點那條向前的邊選了沒有的方案數。

之後我們就可以用揹包求出\(g\)了。

有乙個無向圖,邊分為紅邊和藍邊,兩種邊分別構成一棵樹。兩個人在兩棵樹上各乙個點。

兩人輪流移動,操作只有兩個:走或不走。你只能走到與所在點相連的點上。

先手在紅樹上移動,後手在藍樹上移動。如果任意時刻兩個人位於同乙個點即可輸出

紅樹需要最大化玩家的操作次數,藍樹需要最小化玩家的操作次數。

求最終操作次數的值,若遊戲可以一直進行下去,那麼輸出\(-1\)。

先考慮判斷\(-1\)。

容易發現,遊戲能夠一直進行,最後一定是某種迴圈。

而這種迴圈,通過手玩是可以\(get\)到的。

就是後手一直在\(b\)樹上追先手,先手不動,等到後手快來的時候,跳一下,又離後手很遠,之後在**等,之後再跳回來\(...\)如此迴圈。

那麼判斷\(-1\)就很簡單了,就是將圖按照後手的\(b\)樹上的深度建樹,如果先手能夠在後手之前走到乙個能一直進行上述過程的點,那麼就是\(-1\)。

其實不是\(-1\)就更簡單了,那麼先手就只能跳到後手的樹中深度最遠的點等後手了(因為在這個子樹中不存在那種能繞後手的點)。

給定一棵無根樹,定義\(f(i)\),對於所有大小為\(i\)的點集,求出能夠包含它的最小連通塊大小之和。

對於\(i=1 \to n\)的所有\(i\),求出\(f(i)\)。

披著\(f\)題外衣的普及題。。。

考慮將貢獻放到每乙個點上,那麼就是要對於每乙個點,求它被多少集合的最小聯通塊包含。

emm...後面不想寫了。。。

之後就是用組合數算每乙個點的貢獻,之後用多項式統一計算就好了。

Atcoder AGC006 解題報告

給出長度為 n 的字串 s 和 t 求乙個字串滿足 長度至少為 n 字首為 s 字尾為 t 請找出長度最短的這樣的字串並輸出他的長度 資料範圍很小,直接列舉判斷就好了。給出乙個 n 層的方格金字塔,自頂向下依次標號為第 1 到第 n 層。其中第 i 1 le i le n 層有 2i 1 個方格。第...

Atcoder AGC004 解題報告

用若干個 1 times 1 times 的小方塊 立方體 組成乙個 a times b times c 的大長方體,每個小方塊可以塗成紅色或藍色,但要滿足以下要求 至少有 1 個紅色方塊與 2 個藍色方塊。所有的紅色方塊必須組成乙個長方體。所有的藍色方塊必須組成乙個長方體。求所有滿足要求的染色方案...

USACO Hamming Codes 解題報告

資料小,暴力搜尋可以搞定。但是推薦使用dfs,每個節點 數 有取與不取兩個分支。注意 0是必須出現的。證明如下 最終得到的結果序列中,0是必須出現的,證明如下 如果存在另乙個滿足要求的結果序列s 其最小值為a1 n 0,那麼序列s s n 是滿足條件的最小解,且首元素為0 id xpli1 prog...