首先發現這個樹的形態沒啥用,只需要保證度數之和是\(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監獄。為準備越獄,他需要散布訊息給監獄中其他人來共同協作,但是監獄中魚龍混雜,分成各個小團體,內部...