Atcoder AGC004 解題報告

2022-08-19 00:27:07 字數 2534 閱讀 8461

用若干個\(1 \times 1 \times\)的小方塊(立方體)組成乙個\(a \times b \times c\)的大長方體,每個小方塊可以塗成紅色或藍色,但要滿足以下要求:

至少有\(1\)個紅色方塊與\(2\)個藍色方塊。

所有的紅色方塊必須組成乙個長方體。

所有的藍色方塊必須組成乙個長方體。

求所有滿足要求的染色方案中,紅色方塊數與藍色方塊數相差個數的最小值。

如果有偶數答案就為\(0\),如果沒有那麼就砍最長的邊。

現在有一群史萊姆,它們有\(n\)種顏色。

現在你需要蒐集齊\(n\)種顏色,但是只能夠使用下面的方法:

選擇顏色\(i\),然後花費\(a[i]\)的代價抓乙隻顏色為\(i\)的史萊姆。

施展魔法,讓已經抓到的所有的史萊姆的顏色都從\(i\)變為\(i+1\),代價是\(x\)(顏色為\(n\)的史萊姆的顏色變為1)。

現在要求你以最小的代價蒐集齊\(n\)種顏色,輸出最小代價。

考慮列舉用了幾次魔法(實現的時候是最多多少次,因為浪費了肯定不優,所以沒事),假設是\(m\)次。

那麼我們處理出每乙個點向前的\(m\)步中的代價最小值,讓這只史萊姆在那個位置抓,就好了。

這樣一定是沒有問題的,顯然可以構造。

給定乙個網格圖,有些位置已經被塗色。

要求構造兩個相同大小的網格圖,並且在上面塗色,需要保證顏色四聯通。

滿足這兩個網格的塗色部分的重合位置恰好是給定的網格圖的塗色位置。

題目保證邊界上不會被塗色。即對於第一行、第一列、第\(h\)行、第\(w\)列,都不會有#出現。

發現題目保證邊界沒有染色,這是乙個很好的條件,考慮在這上面做手腳。

我們考慮用兩個對稱的梳子來構造。

就是第乙個圖的最左邊全染了,最右邊不染,中間的奇數行染,第二個圖是其取反。

這麼做之後,發現這兩個圖的\(and\)是乙個空的棋盤,而且兩個圖再在任意乙個空位置染色都是聯通的。

那麼我們就將原圖中染色的點在兩個圖中都染上,就做完了。

有\(n\)個城市,每個城市有乙個傳送點,都可以傳送到唯一的另外乙個城市。

保證從任何位置出發經過若干次傳送之後能夠到達\(1\)號城市。

現在希望修改一些點的目的地,使得從任何一點出發在傳送\(k\)次之後恰好都能到達\(1\)號城市,求最少要改變目的地的城市的數量。

注意到是恰好\(k\)次到\(1\)號點,而且原圖是乙個基環內向樹,\(1\)號點在環上。

那麼如果環上還有其它點,一定只能有乙個點達到要求,所以第一步就是將\(1\)號點連成自環。

之後就是一棵指向父親的樹了,而且條件就變成了每乙個點,最多\(k\)步到達根。

這個可以考慮類似樹形\(dp\)的"樹形貪心",就是乙個子樹不得不改,才改。

我們從葉子向上考慮,如果乙個點,子樹中到它的最遠距離有\(k-1\)了,那麼它就要連到根上,因為如果不連,最遠的點就不滿足要求了。

考慮實現,如果乙個點的父親變成根了,那麼回溯的時候這個子樹就沒有距離的貢獻了,之後就做完了。

有乙個棋盤,上面要麼是空的,要麼有乙個機械人,要麼是乙個出口(有很多機械人,但只有乙個出口)。

每次可以命令所有機械人向上下左右中的某個方向移動一格,如果它超出了棋盤的邊界就會消失。

如果它到了出口的位置就會被你救下(並且從棋盤上消失)。求你能夠救下的機械人的最大值。

因為只有乙個出口,我們可以認為機械人不移動,利用運動的相對性,看成是出口在動。

顯然初始的時候,如果乙個機械人也不殺死,那麼出口能夠活動的範圍是乙個矩形,在這個矩形內的機械人都能被吸收。

那麼我們考慮當出口的活動範圍是\((l,r)和(u,d)\)這乙個矩形的時候的答案。

這個可以設\(f[l][r][u][d]\)表示這個矩形的答案,每次可以拓展乙個方向轉移,注意用字首和優化以及轉移的時候要判斷一些細節。

給定乙個\(n\)個點,\(m\)

\((n-1 \le m \le n)\)條邊的圖,沒有自環,沒有重邊。

每個點初始是白色。每次操作可以處理一條邊,其兩個點如果顏色相同則都變成相反的顏色(黑變白,白變黑)。

詢問能否將每個點都變為黑色。如果能,輸出最少的運算元;如果不能,輸出-1.

這裡\(m=n-1\)有挺多的部分分,而且我也只會這個部分分\(qaq\)。

我們考慮給每乙個點安排乙個權值,其中奇數層的權值是\(1\),偶數層的是\(-1\)。

如果乙個點是白色,那麼這個點看上去的數值就是它的權值。

如果乙個點是黑色,那麼這個點看上去的數值就是它的權值的相反數。

那麼題目的操作就是每次將乙個數值\(1\)從選的兩個點中的乙個點移動到另乙個點。

最終的目標就是所有的\(1\)都在偶數層的點,所有的\(-1\)都在奇數層的點。

我們考慮對於每一條邊計算貢獻,顯然,一條邊要交換的次數,就是子樹中\(1\)和\(-1\)的個數的差值。

這是因為只有那麼多是一定要和子樹外的點交換的,而且那些可以內部匹配的點一定不會走父親這條邊交換。

那麼我們就做乙個簡單的樹形\(dp\)就完事了。

Atcoder AGC006 解題報告

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

Atcoder AGC005 解題報告

有乙個字串 x 對它進行操作。該串只含 s 和 t 凡是 s 與 t 連在一起都要將它們一起去掉。現在進行若干次操作直到該串中沒有連在一起的 st 問剩下的長度。考慮用對頂棧模擬。先將所有的字串加入右棧中。依次將乙個字元從右棧中彈出,加入左棧。如果在任意時刻,出現了左棧頂是 s 而右棧頂是 t 那麼...

USACO Hamming Codes 解題報告

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