2013第四場多校

2022-08-20 17:54:10 字數 910 閱讀 2505

多校第四場:6題,打得最好的一場多校。還是cjboy給力。本場比賽我基本上沒什麼貢獻,搞04一搞就是一下午。最後看了09覺得只有狀態壓縮,不知道怎麼優化。

1004    圖論,強聯通分量

(0)、一開始推理的時候思路很清晰,但是接著就腦殘了,沒怎麼細想就直接去套樣例。以為得到了正確的解法,只是需要乙個特判。然後就開始去寫**了。**寫著寫著就發現不好寫。估計卡**卡了1個小時。其中也一直在測樣例是怎麼回事,當時邏輯混亂了,行動就變得緩慢。當再次看時間的時候,發現已經過去乙個多小時了。其實這個時候需要冷靜一下,從頭分析,別再繼續卡**。因為分析出錯,導致寫了很多無用**,而這些無用**的實現又有些難度,然後就卡**了。分析要細緻啊。。。一旦出錯先認真看看有沒有分析錯,而不是輕率地作出決定。

(1)、先求乙個強聯通分量,得到乙個或多個dag圖。

(2)、列舉某個強聯通分支作為保持整個圖不是強聯通的關鍵區。設在聯通分支v中點的個數為cv,得res=mas(res,n*(n-1)-m-(n-cv)*cv),即所有聯通分支v以外的所有點都向v連一條有向邊,v裡面的點不能向外連邊;

1009 狀態壓縮dp

(0)、比賽時候的分析無誤,只是對於時間複雜度的估計又搞錯了。看了題解後,學到了新的東西。

(1)、題目的要求可以看成是如何將乙個狀態分解成3個不想交的子狀態。將問題簡化,求如何將乙個狀態分解成不想交的兩個子狀態。這個的問題的解決方法在第三場多校就已經用到了。

(2)、現在問題回來,其實三個子狀態可以看成1+(1+1),可以看成兩個子狀態1和(1+1),另外乙個狀態還得再分解。這樣完全可以dp去做。dp[0][i]表示不將i狀態分解。dp[1][i]表示將狀態分解成兩個子狀態。dp[2][i]表示將狀態分解成三個子狀態。可以得到dp方程:dp[2][i]=min( max(dp[0][j],dp[1][j^i]), max(dp[1][j],dp[0][j^i]) ));

2013多校第四場 B題

題意 兩個都含有n個元素的陣列a,b,求 a i b j i j n 的前 m個最小值 m n 解題思路 假定a,b陣列都有序,則我們有下面的結論 a 1 b 1 a 1 b 2 a 1 b n a 2 b 1 a 2 b 2 a 2 b n a n b 1 a n b 2 a n b n 那麼我們...

2015 多校第四場 XYZ and Drops

include include include include using namespace std struct node const int maxn 210 vector pair iterator it int d 5 2 int r,c 直接暴力模擬,注意題意 若水珠原來大小為3,恰好某...

2015 多校第四場 Walk Out

場上一直wa,場下清題又不停t,最後終於調好了,dfs過程中會爆棧,最後向右向下掃點的時候注意要標記,每個點只用加入一次不然會t。總體思路就是 從 1,1 點開始dfs,只走0的位置,注意方向是上下左右,看能到達的最遠點,將最遠點做為新的起點,這時最小的二進位制長度已經找到了。然後bfs,每次向右或...