上海網(wǎng)站建設(shè)選緣魁百度搜索結(jié)果優(yōu)化
NOIP2023模擬13聯(lián)測34 總結(jié)
文章目錄
- NOIP2023模擬13聯(lián)測34 總結(jié)
- 比賽過程
- 題目
- A. origen
- 題目大意
- 思路
- B.competition
- 題目大意
- 思路
- C. tour
- 題目大意
- D.abstract
- 題目大意
比賽過程
看了一下題,感覺就 T 2 T2 T2 有一點思路。
T 1 T1 T1 先打一個 30 30 30 分暴力,感覺要分位考慮,想了大概 1 h 1h 1h 就跳了。
T 2 T2 T2 想到了先求出整個區(qū)間的長度乘上包含這個區(qū)間的總數(shù)再減去重復(fù)算的,想了很久,只會相鄰的,只好打個暴力,發(fā)現(xiàn)線段樹超時,加上離散化又掛了,于是調(diào)了好久都沒調(diào)出來。只好跳了
T 3 T3 T3 趕緊打個暴力
T 4 T4 T4 檢查了前 3 3 3 題代碼后沒什么時間了,題也沒看懂
題目
A. origen
題目大意
給定 n n n 個整數(shù) a 1 , a 2 , a 3 ? a n a_1,a_2,a_3\cdots a_n a1?,a2?,a3??an? ,求
∑ i = 1 n ∑ j = i n ( ⊕ k = i j a k ) 2 m o d 998244353 \sum_{i = 1}^n\sum_{j = i}^n(\oplus_{k = i}^ja_k)^2 \mod 998244353 i=1∑n?j=i∑n?(⊕k=ij?ak?)2mod998244353
n ≤ 2 ? 1 0 5 , 0 ≤ a i ≤ 2 ? 1 0 5 n\le 2 * 10^5 , 0\le a_i \le 2 * 10 ^5 n≤2?105,0≤ai?≤2?105
思路
設(shè) s i = ⊕ j = 1 i a j s_i = \oplus_{j = 1}^i a_j si?=⊕j=1i?aj? ,則原式變?yōu)?#xff1a;
∑ i = 0 n ? 1 ∑ j = 1 n ( s i ⊕ s j ) 2 \sum_{i = 0}^{n - 1} \sum_{j = 1}^n (s_i \oplus s_j)^2 i=0∑n?1?j=1∑n?(si?⊕sj?)2
按位考慮,一個數(shù)可以用二次冪的和來表示??紤]怎么處理平方。
因為:
( ∑ i = 1 n a i ) 2 = ∑ i = 1 i a i 2 + 2 ∑ i = 1 n ? 1 ∑ j = i + 1 n a i ? a j (\sum_{i = 1}^n a_i)^2 = \sum_{i = 1}^i a_i^2+ 2\sum_{i = 1}^{n - 1}\sum_{j = i +1}^n a_i*a_j (i=1∑n?ai?)2=i=1∑i?ai2?+2i=1∑n?1?j=i+1∑n?ai??aj?
把兩部分分開處理。
先處理前面的那項
把 i i i 的每一位分開求貢獻(xiàn),當(dāng)前處理到第 j j j 位
設(shè)前 i ? 1 i - 1 i?1 個數(shù)這一位為 0 0 0 的數(shù)有 s 0 s0 s0 個,為 1 1 1 的數(shù)有 s 1 s1 s1 個
那么求這一位的貢獻(xiàn)
- 若當(dāng)前這一位為 1 1 1 : 2 j ? 2 ? s 0 2^j*2*s0 2j?2?s0
- 若當(dāng)前這一位為 0 0 0 : 2 j ? 2 ? s 1 2^j*2*s1 2j?2?s1
然后處理后面的那項
先枚舉兩位 j 1 , j 2 j1 , j2 j1,j2
當(dāng)前處理到第 i i i 位
設(shè) s u m k , l sum_{k , l} sumk,l? 為前面 i ? 1 i - 1 i?1 個數(shù)的第 j 1 j1 j1 位為 k k k ,第 j 2 j2 j2 位為 l l l 的個數(shù)
設(shè)第 i i i 個數(shù)這兩位分別是 x , y x , y x,y
那么這里的貢獻(xiàn)為: 2 ? 2 j 1 ? 2 j 2 ? s u m ! x , ! y 2 *2^{j1} * 2^{j2} *sum_{!x , !y} 2?2j1?2j2?sum!x,!y?
B.competition
題目大意
現(xiàn)在有 n n n 個區(qū)間 [ l i , r i ] [l_i , r_i] [li?,ri?] ,現(xiàn)在問你選取若干的連續(xù)的區(qū)間的區(qū)間并的大小的和。
思路
設(shè) p r e i , j pre_{i , j} prei,j? 表示前 i ? 1 i - 1 i?1 個區(qū)間內(nèi),包含點 j j j 的最靠右的數(shù)是多少。
可以發(fā)現(xiàn)答案就是
∑ i = 1 n ( r i ? l i + 1 ) ? i ? ( n ? i + 1 ) ? p r e i , j ? ( n ? i + 1 ) \sum_{i = 1}^n (r_i - l_i +1) * i * (n - i + 1) - pre_{i , j} * (n - i +1) i=1∑n?(ri??li?+1)?i?(n?i+1)?prei,j??(n?i+1)
也就是這個區(qū)間被記入答案的次數(shù)乘上區(qū)間的大小再減去重復(fù)的次數(shù)
可以用一棵線段樹維護(hù)加離散化來維護(hù)。
先統(tǒng)計答案,然后用線段樹更新 p r e pre pre
要卡常
C. tour
題目大意
有 n n n 個城市,每個城市有一個文化值 v a l i val_i vali?
接下來有兩種操作
-
0 x y
表示城市 x x x 和城市 y y y 之間建立一條無向邊 (保證修建前 x x x 和 y y y 不連通)
-
1 x y
? 代表有一個人,初始時他的文化值為 0 0 0 ,他會從 x x x 走到 y y y (保證此時 x x x 與 y y y 連通),每走到一個城 市 i i i,他會與這個城市進(jìn)行文化交流,如果此時他的文化值大于等于 v a l i val_i vali? ,那么這次文化交流是 成功的。無論文化交流結(jié)果如何,在此之后,他的文化值會加上 v a l i val_i vali? 。求出成功的文化交流的次數(shù)。
D.abstract
題目大意
定義函數(shù) f ( i , j ) , g ( i , j ) f(i , j) , g(i , j) f(i,j),g(i,j) ,分別表示 i → j i\to j i→j 的權(quán)值和權(quán)值或,想要求出 ∑ i = 1 n ∑ j = 1 n f ( i , j ) g ( i , j ) \sum_{i = 1}^n\sum_{j = 1}^n f(i , j) ^{g(i , j)} ∑i=1n?∑j=1n?f(i,j)g(i,j)
把 $f(i , j) , g(i , j) $ 放到 i → j i\to j i→j 的簡單路徑上的點權(quán)和點權(quán)或
輸出答案 m o d 111121 \mod 111121 mod111121
定義: 0 0 = 0 0^0 = 0 00=0