似乎是顯然的狀壓。
$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 能偷的節點建邊。發現這個東西一定會形成森林,其中一些樹為基環樹,其餘為普通形態的樹。對於普通形態的樹,顯然可以賺到其中所有能賺的錢。但基環樹對應著不能從環上乙個節點偷另乙個節點。...