[wc2021] 括號路徑
顯然 如果 a
aa 可以到達 b
bb ,則有 b
bb 可以到 aaa
我們考慮從小的括號序列開始找 當存在邊 (a,
b,w)
(a,b,w)
(a,b,w
) 和 (c,
b,w)
(c,b,w)
(c,b,w
) 都為左括號
那麼就有 a
−>b−
>
ca->b->c
a−>b−
>
c 構成乙個合法序列 所以 a,c
a,ca,
c 互相可以到達
此時就可以把 a,c
a,ca,
c 縮成乙個點 用並查集實現,並維護每乙個集合指向它且為左括號的邊和當前 siz
esize
size
再用新的並查集來當中介去合併新的點
具體實現時 按置合併邊(同型別邊放一起 用 map
mapma
p )。當乙個並查集當中介時 它的同型別的邊對應的點可以合併 所以乙個合併可能會引起另乙個合併,把它們放入佇列處理,佇列中存合併操作。
時間複雜度 o(m
logm)
o(m\log m)
o(mlogm)
期望得分100
[wc2021] 表示式求值
考慮一列一列處理 把矩陣每一列分別計算 相當於求解
首先建出表示式樹 子節點為值 a
ia_i
ai 非子節點為 <
,>,?
<,>,?
<
,>,?
然後在樹上 dpdp
dps
ss 是存陣列下標的集合,x
xx 是樹上的乙個節點,sum
xsum_x
sumx
為 x
xx 子樹所有的方案數,l
ll 為 x
xx 左子樹,r
rr 為 x
xx 右子樹
狀態 dp(
s,x)
dp(s,x)
dp(s,x
) 表示:在任意 i∈s
i\in s
i∈s 且 j∉s
j\notin s
j∈/
s 有 a
i>aj
a_i>a_j
ai>aj
的情況下,x
xx 出算出來的結果是 a
ia_i
ai( i∈s
i\in s
i∈s )的方案數
那麼很容易得到轉移方程
求得所有的 dp(
s,x)
dp(s,x)
dp(s,x
) 後 我們開始計算最後的 ans
ansan
s 對 a 0,
a1,a
2...
am−1
a_0,a_1,a_2...a_
a0,a1
,a2
...
am−1
排完序後得到 ap0
,ap1
,...
apm−
1a,a,...a_}
ap0,a
p1,
...a
pm−1
答案就是
a ns
=∑i=
0m−1
api×
(dp(
,roo
t)−d
p(,r
oot)
)ans=\sum_^a\times(\ dp(\\},root)-dp(\\},root) \ )
ans=i=
0∑m−
1ap
i×(
dp(,
root
)−dp
(,ro
ot))
時間複雜度 o(2
m∣e∣
+npo
ly(m
))
o(2^m∣e∣+npoly(m))
o(2m∣e
∣+np
oly(
m)) 期望得分100
[wc2021] 斐波那契
嗚嗚嗚嗚嗚我對這類題過敏啊嗚嗚嗚
您們好好學數學了嗎 嗚嗚我沒有我只會看題解
題解 p7325 【[wc2021] 斐波那契 大佬的題解
orz orz 撲通撲通跪下來
遊記 WC2021遊記
在學校的時候教練讓大家報名,本著不會也要當炮灰的原則填了報名表 放了寒假,給班主任請了假開始自己在家突擊一些完全沒有考到的新知識點,看了點歷年題覺得十分不可做,於是每天就頹頹頹 早上的開幕式很水,說好的8 00 8 30結果講了幾分鐘就沒了 截了一張 dzd 講話的圖作紀念 上來就是隨機化演算法什麼...
WC2021前日常胡話
不知不覺離noip的恐怖回憶已經過去乙個半月了,但我似乎還在whk與oi間徘徊,以至於兩邊都沒搞好,自己心態還受了影響。難得清閒,寫點心裡話出來,就沒有那麼難受了吧。初中我就一直不太很重視whk的學習,上課有的時候不是很認真,然後不太願意寫的作業就應付應付或者抄一抄就過去了。但是因為初中知識太簡單,...
WC2021 表示式求值
題目鏈結 題解 首先讓我們解決乙個簡單的問題 注意到 k 很小 那麼不妨維護 f 表示 i 號生物的每個位置是否都比 s 中每個元素的值大。用 bitset 維護 f 查詢時 從大到小列舉值即可。時間複雜度 o frac 解決這個問題的關鍵是 每個位置的值都是由 k 個初始陣列中的元素得到的 而 k...