ARC104 D F 簡要題解

2022-05-11 14:05:35 字數 1746 閱讀 7286

這場出題人應該很擅長計數,尤其是不重不漏的按方案計數。

元素範圍為 \(1 \to n\),每個元素最多出現 k 次,對於所有可能的集合,求出其平均數,問對於任意 \(i \in [1,n]\) 作為平均數的方案數事多少。

\(1 \le n,k \le 100\)

肯定是個 dp 題,首先列舉平均數 v,設 \(f[x][y]\) 表示用 \(1 \sim x\),拼出來總和為 y 的方案數(每個數 x 改成 \(x - v\),最後考慮和為 0 即可),轉移 \(f[x][y] = \sum f[x-1][y-kx]\),用字首和優化一下即可做到 \(\theta(n^4)\),但這咋求平均數。

發現對於 x 事平均數的方案,對於小於 x 的事 \((x-1),(x-2),(x-3)\cdots\),大於的事 \((x+1),(x+2)\cdots\)

讓集合中的每個元素都減 x,則最終集合的和是 0 則 x 就是平均數,所以考慮正負貢獻分別考慮,小於 x 的貢獻是 \(-1 \to -(x-1)\) 的,大於 x 的貢獻是 \(1 \to n-x\) 的,所以就是小於的湊出乙個數 -t,大於的湊出乙個數 t,這樣就行了。

另外發現第二維可以縮小範圍達到 \(125000\) 左右來優化常數。

神仙題。

考慮我們的最終序列,將它按 \(a_i\) 排序使它的最長上公升子串行等於排序後 id 的最長上公升子串行。

那麼優先比較 \(a_i\),然後 id 大的放前面,這樣轉化後的排列最長上公升子串行長度就是固定的了。

列舉全排列,讓 \(a_i\) 不降,其中的限制是 \(a_i (\le,<) a_\),如果 \(id_i > id_\),那麼有等號,否則沒有。

我們考慮把所有的小於號變成小於等於,顯然直接把後面的減一即可。

所以現在就是從點 (1, 1) 開始到 \((n+1,\infty)\) 的方案數,這個可以容斥求的。

最終複雜度 \(\theta(n!\times n^3)\)

容易發現每個位置的取值並不重要,重要的事它們的相對順序,所以高度就變成 \(\theta(n)\) 級別的了。

考慮每個位置事哪些位置的控制點,我們令 0 處有乙個 \(\infty\) 高度的樓,令每個位置向前乙個 \(h_j > h_i\) 的位置 j 連邊,這樣你就發現每個位置的子樹是乙個原序列上的區間。

我們考慮讓序列 p 和 h 建立起一一對映的關係。因為有 \(x_i\) 的限制,所以我們讓 \(h_i\) 盡可能小。

容易發現,對於一種已確定的 p,那麼就可以建出樹來,左兄弟的 h 一定小於等於自己,父親的 h 一定大於自己,孩子們的 h 一定小於自己。因此不難確定 \(h_i=\max\\),每個 p 都對應著乙個 h,也很好構造每個合法的 h 對應著乙個 p。

因此我們有了區間 dp 的想法,設 \(f[l][r][h]\) 表示在區間 \([l,r]\) 中,l 作為根,高度為 h 的方案數,有

\[\large\sum_^xf[i][r][x-1]\times f[l][i-1][y]\\

+\sum_\sum_^f[i][r][y]\times f[l][i-1][x]\times [h_i \ge x-1]}\]

字首和優化即可。

const int p = 1e9 + 7;

const int n = 105;

ll f[n][n][n], s[n][n][n], x[n], n;

int main()

} }write(s[1][n][n]);

return 0;

}

ARC068 簡要題解

任意一面朝上直接 5 6 5 6 或者 6 5 6 5 然後就沒了 首先把牌張數大於三張的丟到三張以下 設還有兩張的有 k 個 如果 k 是 2 的倍數,那麼可以直接全扔了 如果不是,需要找到乙個只有一張牌的扔掉才能把這 k 個扔掉 拿個桶記一下 長度 geq len 的區間中必然存在 len 的倍...

ARC065 簡要題解

從前往後不好做,那就直接從後往前 考慮設 f i j 為在第一張圖中屬於 i 集合,在第二張圖中屬於 j 集合的點的個數 這樣會 mle 但是又發現有用的 i,j 不會很多,直接 map 存下來就行了 轉化為切比雪夫距離之後直接從起點 bfs 把橫縱座標離散化之後存在 set 中,找到乙個就刪掉他,...

ARC063 簡要題解

模擬即可 算下有多少個極大差就行了 考慮乙個點到另乙個點的路徑是什麼情況 必然是一段上公升的加一段下降的,單增單減也行 然後就可以考慮乙個貪心策略了 每次選出最小的,給他周圍沒有附權值的附乙個 這個最小點權值 1 的權值 不難發現這樣是滿足上面那個條件的 不合法情況中間判一下就行 考試考過,想出來了...