Comet OJ - Contest #11 題解&賽后總結


Solution of Comet OJ - Contest #11

A.eon

-Problem designed by Starria-

在模 10 意義下,答案變為最大數的最低位(即原數數位的最小值)和原數最低位的差。

令$S$為輸入數字串,則答案為 $(\min_{i=1}^{n}S_i-S_n)%10$ 。

時間復雜度 $O(n)$ 。

B.usiness

-Problem designed by Winniechen-

這是一個很顯然的動態規划問題。

令$g_{i,j}$表示第$i$天,手里有$j$個節點,最多會返還多少節點。

第$i$天獲得節點的過程轉移為$g_{i,j+f_j}=\max(g_{i,j+f_j},g_{i-1,j})$,而對於存儲節點的過程,只需對每一種存儲方式做一個完全背包即可。

C.elebration

-Problem designed by Starria-

定義長度不超過 $\frac{n-1}{2}$ ,且不含重復顏色的段為合法的段。記 $pre_x$ 為以 $x-1$ 為右端點的合法段最遠的左端點, $nxt_x$ 為以 $x$ 為左端點的合法段最遠的右端點。

枚舉題面所述三元組中的 $a,b(a<b\le nxt_a+1)$ ,則合法的 $c$ 是 $(b,nxt_b+1]$ 與 $[pre_{a},n]$ 的交集。也就是說,當 $pre_{a}>nxt_b$ 時, $b$ 的貢獻是 $nxt_{b}+2-pre_{a}$ 。

每次向右移動 $a$ 時,將 $(nxt_a+1,nxt_{a+1}+1]$ 區間內的 $b$ 的貢獻掛在 $nxt_b$ 上,在移動 $pre_{a}$ 時將經過的貢獻減去即可。

時空復雜度 $O(n)$ 。

利用數據結構可以簡單地維護交集,這哪里卡得掉沒有刻意去卡。

D.isaster

-Problem designed by Winniechen-

對於一個圖很難處理,所以考慮將圖簡化,直接建立一棵生成樹達到原來的效果。

由於我們詢問的時候,要求只能走到編號 $\le y$ 的點,所以保留的邊兩端點編號的 $\max$ 應當盡可能小,這樣就有更多的邊可以被一次詢問用到。

所以我們將邊按照兩端點的 $\max $ 排序,建立一棵 kruskal 重構樹。(這個不會自行解決)

在此基礎上維護一棵線段樹和一個倍增數組,每次找到 kruskal 重構樹上能到達的最高點,然后詢問子樹乘積和,修改就直接修改即可。

E.ffort

-Problem designed by Winniechen-

假設總攻擊次數為 $k$ ,那么我們要把這 $k$ 次相同的攻擊分配給 $n$ 個不同的人,根據插板法來看也就是在這 $k$ 次攻擊里插 $n$ 個板。記令攻擊次數恰為 $k$ 的方案為 $ans_1$ ,插板方法為 $ans_2$ , $k$ 的貢獻即為 $ans_1\times ans_2$ 。

維護 $k$ 次項系數為一個第 $i$ 種數據結構攻擊次數中插 $k$ 個板的方案的多項式 $F_i(x)$ ,那么 $[xk]F_i{a_i}(x)$ 就是第 $i$ 種里插 $k$ 個板的方案數了。

由於我們只有 $n$ 個板,所以多項式長度始終不超過 $n$ 。在模 $x^{n}$ 意義下做多項式快速冪,最后再將 $m$ 個多項式合並即可。

整體復雜度最優可以達到 $O(nm\log n)$ , std 寫的是 $O(nm\log n\log a_i)$ 。

F.arewell

-Problem designed by negiizhao-

令 $E_S$ 表示點集 $S$ 內部的邊數, $E_{S,T}$ 表示 $S$ 與 $T$ 之間的邊數, $F_S$ 表示 $S$ 是 DAG 的方案數。

枚舉入度為 0 的點集 $T$ ,轉移為 $F_S=\sum_{T\subseteq S,T\neq \varnothing }(-1)^{|T|-1}F_{S\backslash T}2^{E_{T,S\backslash T}}$ 。

$S$ 中入度為 0 的點集的每個子集都會算一次,對其簡單容斥即可得到系數 $(-1)^{|T|-1}$ ,而系數 $2^{E_{T,S\backslash T}}$ 來自於 $S\backslash T \rightarrow T$ 的邊只能斷掉或指向 $T$ 。

對DAG計數稍有了解的人可以從這里開始閱讀

$2^{E_{T,S\backslash T}}$ 可以寫作 $2^{E_S - E_T - E_{S\backslash T}}$ ,因此原式化為$$\frac{F_S}{2^{E_S}}=\sum_{T\subseteq S,T\neq \varnothing }\frac{(-1){|T|-1}}{2{E_T}}\ast \frac{F_{S\backslash T}}{2^{E_{S\backslash T}}}$$

對上述式子進行子集卷積即可。

對DAG計數稍有了解的人可以從這里開始閱讀$\surd$

吐槽總結

  • BY Winniechen&Starria

出題人的一些吐槽

  • 為什么10min還沒有人過B (在10min的時候

  • 為什么大家D都一直在Wa啊!

  • 為什么有人會寫樹狀數組啊!

  • CD是不是順序反掉了啊……(這是Starria的鍋!

  • B看起來出難了(手動狗頭)

  • 怎么有人1h不到就出F了!

  • (看起來F卡人常數了….

  • 聽說有人覺得題面不好,我不這么認為

  • 1.5h的時候,終於六道題的一血都出來了,這讓出題人很激動

  • 2h的時候,終於有人A掉5道題了

  • 2h 10min的時候,終於有 >10個人切 四道題了

  • 2h 23min的時候,終於有第二個切E的人了!

  • 在最后的10min的時候,發現supy的F被卡常了

  • 然后終於出現了這場比賽唯一一個AK的選手!

  • 最后看起來,CD放反了,EF放反了

  • 為啥D題大家都沒有發現$a_i ,v \le 10^9$會比$998244353$大

  • 為啥$B$題會有那么多人wa那么多發

  • C題出題人為何如此毒瘤

  • 為何題面會出成這個樣子

  • 盡請期待后天晚上的視頻題解,屆時出題人Winniechen和Starria會為大家講解這次試題,並解答一些花絮!

出題人的一些自我坦白與反思總結

  • 其實原來的題目不是這個樣子的,只不過在考試前三天,F的算法出現了問題,今天才出好這個F的數據,所以讓人感到抱歉
  • 每道題的數據都被dreamoon加強過,原來我的數據菜得要死
  • 然后兩位(三位)出題人都是鴿子,都很能拖
  • 主要負責人(Winniechen)多數時候不能及時的傳遞信息,並且不參照出題手冊出題,讓AA姐等工作人員感到棘手,在此我深表歉意
  • 謝謝大家支持!
  • 出題人的QQ:Winniechen 1967199892 , Starria 972808330


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM