省流:\(100+0+0+0=100\)
簡稱:唐詩
T1
先寫了個暴力,然後在想怎麼最佳化,然後想了個區間 DP 但是寫的時候又不會了……
然後發現如果這一塊數的二進位制每一位都有一個數的這一位為 \(0\) 或者都相同,那麼這些數合併起來一定最優,然後雙指標搞,複雜度 \(O(30n)\)。(這麼繞口)
賽後聽別人說有規律:
所有數的與的和就是答案要求的數;
然後比一下就行了,複雜度 \(O(n)\)。
想想發現很對,跟我的有異曲同工之妙。
T2
一眼暴力,因為 \(n,m\le 100\),然後懶得寫看 T3 了。
T3
二次省流:\(2n\) 個輸入但是
fd(i,1,n)
,唐
賽時怎麼調都不過,但是發現一個規律,就是被兩個數中間那一段區間完全包含的數不能選,然後想了一個結論但是就過了第一個樣例。
正解是按左端點排序+樹狀陣列。
核心程式碼:
sort(p+1,p+n+1,my);
fd(i,1,n)
{
(f[i]+=ask(a[p[i]].l)+ask(a[p[i]].r)+2)%=mod;
add(a[p[i]].r,f[i]);
(ans+=f[i])%=mod;
}
然後樹狀陣列要開 \(4\) 倍空間……
T4
第一眼只會暴力,但是寫 T3 了就沒寫……