10.4 程式碼源 2024 CSP-S 模擬賽 Day 9

whrwlx發表於2024-10-04

省流:\(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 了就沒寫……

\(\LARGE{唐}\)