模擬109 題解

2022-03-16 19:19:05 字數 692 閱讀 7525

似乎是顯然的狀壓。

$dp_$表示第$i$層,其中每個點到達終點路徑條數的奇偶性為$s$的方案數。

直接用位運算轉移,複雜度是$o(m*k*2^k)$,然後卡卡常(把$k$迴圈展開)就過了。

似乎考慮單次的變化量,可以繼續消掉乙個$k$,然後就好了。

手玩發現合法的狀態一定很多,

所以直接隨機集合對搞就好了。

實際上集合對的交的期望是很大的。

設$cnt_i$表示元素$i$出現的次數。

$$e=\sum \limits_^\frac}}$$

$$=\frac^cnt_i*(cnt_i-1)}$$

上式在所有的$cnt_i$相等時取得最小值,即$cnt_i=\frac$。

所以上式$=\frac$。

然而答案只要求出集合交為$\frac$,實際上在隨機情況下每次隨機到的概率為$\frac$。

被原來做過的一道類似的貪心題思想鉗制住了。

那道題的貪心思想是,每次取出深度最大的,

之後不斷翻祖先,將可以覆蓋到的點覆蓋掉。

然而複雜度是$o(n^2)$的。

似乎這個貪心過程可以用$dfs$的方式解決。

$g_$表示節點$x$,深度為$i$剩餘的未匹配節點。

$f_$表示節點$x$,深度為$i$處的滅火器還能匹配的節點個數。

在子樹中匹配掉一定更優,所以貪心在$lca$處匹配就好了。

模擬17 題解

t1 a.入陣曲 60 演算法 維護一下某一列的從第一行到這一行和二維字首和 然後列舉上下左右邊界,o n 4 100 演算法 省掉左右邊界的列舉,改為從左向右掃一邊,記錄總和 k的餘數,並放入桶中,可以發現,如果這個值出現過,那說明這個位置的總和減去那個位置的差 即這個區間 是k的正倍數 t2又是...

模擬16 題解

貪心,對於每只青蛙,跳的時候盡量遠,越遠選擇越多 注意若用set實現,要先insert 0 1 include2 include3 include4 include5 include6 include 7 define r register 8using namespace std 9 inline...

模擬113 題解

手玩發現這個東西好像有一點規律。考慮在最優的方案下,每增加乙個點對答案的貢獻 0 1 然後隨便寫寫就好了。把 x 向 x 能偷的節點建邊。發現這個東西一定會形成森林,其中一些樹為基環樹,其餘為普通形態的樹。對於普通形態的樹,顯然可以賺到其中所有能賺的錢。但基環樹對應著不能從環上乙個節點偷另乙個節點。...