2019暑期金華集訓 Day7 動態規劃

2022-05-07 23:57:24 字數 2618 閱讀 6584

首先發現這個樹的形態沒啥用,只需要保證度數之和是\(2n-2\)且度數大於0即可。

然後設\(dp_\)表示前\(i\)個點用了\(j\)個度數的最小值,然後就獲得了\(o(n^3)\)的dp。

不妨每個點的度數都減1,那麼總度數就變成\(n-2\)了。

考慮原來\(i\)的作用是什麼:要限制選的點數不能超過\(n​\)。

此時我們總度數小於\(n\),所以只要度數不為0的點的總度數不超過n-2那麼就肯定有點數不超過n。所以我們可以先認為所有點貢獻的都是\(f(1)\),然後如果選的是\(k,k\ne 1\)那麼就把貢獻設為\(f(k)-f(1)\)。

於是就可以直接設\(f_i\)表示當前度數之和為\(i\)的最大貢獻,然後做乙個完全揹包即可。

設\(f_​\)表示\(i​\)當前還剩\(j​\)血的概率,那麼鎖定技能就相當於一次轉移。

那麼最後的詢問就沒了,非常簡單。

那麼每一次詢問呢?我們關注的只是第\(i​\)個人存活的概率,設為\(p_i​\)。

那麼每個人被命中的概率呢?設\(g_j​\)表示除了自己以外還有\(j​\)個人存活的概率,發現就是個揹包,直接硬上分治fft可以得到70分。

當然,我們可以先把一整個揹包算出來再退掉當前物品,就\(o(cn^2)​\)了。

容斥,求至少\(k​\)個葉子的方案數。

列舉葉子集合,用剩下的點組生成樹,然後把葉子掛回去,複雜度\(o(2^nn^3)​\)。

然後用fmt優化容斥,沒了。

發現滿足\(x^2\le 500​\)的質數只有8個。

於是每個數隻會有這幾個質數和另乙個大質數作為因子。

把所有數按大質數排序,然後連續一段就必須放在同乙個集合(或者不選)。

然後設\(f_\)表示前\(i\)個,\(s,t\)裡面分別有哪些質數,亂dp即可。

選一些位置,使得這些位置不相鄰。相鄰定義為八連通。

題解是插頭dp。

(沒怎麼聽清題,但大概不難)

發現刪掉一條鏈之後必然會變成幾個子樹,於是可以設\(f_x\)表示\(x\)子樹的sg函式值,然後暴力列舉刪子樹內哪個點,就獲得了多項式時間的演算法,應該是\(o(n^2)\)的。

如何優化?

設\(g_x\)表示\(x\)以及自己兒子的\(f\)的異或值,然後發現刪掉一條鏈就是這條鏈的\(g\)的異或值再異或掉根的。(大概意思就是這個,可能表述得不是很清晰)

於是對子樹內維護乙個字典樹支援插入、全域性異或、求mex、合併,就沒了。

ntf隨手切掉了清華集訓題目,ntf進清華了,ntfakioi!!!!

平面上\(2n\)個球(球的位置兩兩不同),有\(2n\)個機械人位於\((0,i),(i,0)\),每次啟用乙個機械人拿走它座標軸垂直方向上最近的球,問有多少個方法拿走所有球。

把每一行、每一列視作乙個點,乙個球作為一條邊,邊權為\(x+y\),那麼啟用第\(i\)行的點的時候就會取走與他連在一起的邊權最小的邊,列同理。

所以可以知道每個連通塊點數等於邊數,也就是乙個基環二向樹。每個點要恰好選一條邊,並且選邊的方法受上面的限制,然後求這樣選邊的順序的個數。

樹上每個點選的邊是確定的(自己到父親的那條邊),但環上有兩種情況,所以先列舉是哪種情況,然後每個點要選的邊就確定了。

在樹上,看兒子要選的邊與自己要選的邊的邊權大小關係,如果比自己的小那麼就必須先選,這樣一路dp上去。

在環上,看自己左右兩條邊的大小關係,如果自己要選的邊權更大那麼就必須另乙個點比自己先選,就形成了一些小於號的關係,也用組合數算一下就沒了。

設\(dp_\)表示喂完前\(i\)個熊,並且當前位置在第\(i\)個熊那裡,的最短時間。

顯然可以單調佇列優化,就沒了。

決策單調性,大家都會。

如果對於任意\(i_1\le i_2\le j_1\le j_2\),都有

\[w(i_1,j_2)+w(i_2,j_1)\ge w(i_1,j_1)+w(i_2,j_2)

\]那麼就滿足決策單調性。

列舉中位數\(w\),把一條邊拆成兩條:\(w-a_i,a_i-w\)(分別是白黑邊),再兩個都加上\(w\),就變成了\(2w-a_i,a_i\),然後就是要求一棵恰好\(n/2\)條白邊的最大生成樹。

這個直接wqs二分可以得到,於是得到了\(o(m^2\log^2 m)​\)的做法。

然後有乙個結論:對於最優的\(w\),這個生成樹只包含\(a_i\ge w\)的黑邊和\(a_i\le w​\)的白邊。(???)

考慮wqs二分的過程,是要把\(2w-a_i\)變成\(2w+k-a_i\),發現這樣一來我們可以不列舉\(w\)而直接二分\(2w+k\),然後就沒了。

咕了

我們發現進製一次1的個數就少1。

於是題目就轉化為求最後1的個數的期望。

於是操作的順序與答案無關。

對於每一位,求它的貢獻。

從後往前dp,記\(dp_\)表示第\(i\)位算上進製疊了\(j\)個1的概率。

轉移有兩個。乙個是由上一位進製而來,是\(dp_\rightarrow dp_\);乙個是在這個位置的操作,相當於乘\(px+1-x\)的多項式。

直接暴力dp是\(o(n^2)\)的。

發現乘多項式可以分治fft,而乙個位置如果加了\(w\)那麼只能往前進製\(\log_2 w\)個位置,於是每個位置可以只處理有值的最大地方,然後就可以證出複雜度是\(o(n\log^2 n)\)了。

2019暑期金華集訓 Day6 計算幾何

內積不等式 a,b 2 le a,a b,b 其中 a,b 表示 a cdot b 好像是廢話?a times b a b sin theta 二維叉積 a times b x 1y 2 x 2y 1 三維叉積 a times b left begin i j k ax ay az bx by bz...

2019暑期金華集訓 Day1 組合計數

n le 10 直接暴力列舉。n le 32 meet in the middle,如果左邊選了 x 右邊選了 y 且 x y le b 那麼對答案的貢獻就是 根據範德蒙德恒等式 sum n 所以上面可以拆開成 sum 列舉 x 關於 y 是乙個字首和。如果沒有下界的限制,只有 p i in 0,r...

瀋陽集訓day7

吐槽 記錄 突然才知道自己太菜了,今天t1又因為輸出的時候少輸出了乙個換行符報零,加上就a,真傷心 linux換行和空格是乙個意思啊 t3正解過了 michael為救哥哥身陷囹圄,被關進foxriver監獄。為準備越獄,他需要散布訊息給監獄中其他人來共同協作,但是監獄中魚龍混雜,分成各個小團體,內部...