1. 程式人生 > 實用技巧 >【補題】聯賽模擬22

【補題】聯賽模擬22

簡單計算

\[\sum_{i=0}^q \lfloor \frac {iq} p\rfloor \]

\[\sum_{i=0} ^{\frac p 2}\lfloor \frac {qi} p\rfloor +\lfloor \frac {q(p-i)} p\rfloor \]

然後發現這裡需要考慮奇偶性,很麻煩,那麼式子乘二

然後就成了

\[\frac{\sum_{i=0} ^p\lfloor \frac {qi} p\rfloor+\lfloor \frac {q(p-i)} p\rfloor }2 \]

那麼提出來化簡就有

\[\frac{(p+1)q -\sum_{i=0}^p [p\nmid (qi)]}2 \]

考慮後面的東西怎麼做

其本質就是用 \(i\) 補齊 \(p\)\(q\) 沒有的因子

\(p/gcd(p,q)\)

而在 \(0\to p\) 中這樣的數有幾個呢?

\[\frac{p}{\frac{p}{gcd(p,q)}}=gcd(p,q) \]

\[\sum_{i=0}^q \lfloor \frac {iq} p\rfloor=\frac{(p+1)q-p+gcd(p,q)}2 \]

關於上邊的東西的奇偶性,直接分類討論一下就能證了

感覺

\[\sum_{i=0}^p [p\nmid (qi)]=gcd(p,q) \]

的結論挺棒的

求和

套路差分一下,問題轉化成求\(\sum\limits_{i=1}^n \sum\limits_{j=1}^m d_{i,j}\)

答案顯然為 \(\frac{nm(n+m)}2\)

(第一行的和是 \(\frac{m(m+1)}2\),後面每行增量 \(m\) 直接求和)

記得處理一下爆 \(long long\) 的事

(這倆題式子爽呀!)

分組配對

因為無論怎麼配對都不能超出那個 \(M\),由排序不等式,最大的和最大的配即可

然後不難想到二分,發現不能維護增加的人,就棄了

然後去頹了題解,發現這東西居然可以在外層套倍增,然後感覺有所收穫

具體而言就是如果

check(i,i+(1<<j)-1)\&\&!check(i,i+(1<<(j+1))-1)

那麼就有 \(target\in [2^j+1,2^{j+1}-1]\)

\(orz\)

學到了:外層倍增優化內層二分複雜度

城市遊戲

首先設 \(f_{i}\)\(i\to n\) 的答案

\(ans=f_1,f_n=0\)

轉移就是

\[f_{i}=\min\max_{(i,j)\in E}(f_j+len_{i,j},g_{i\to n ,(i,j)}) \]

\(g_{i\to n,(i,j)}\) 即刪掉 \((i,j)\)\(i\)\(n\) 的距離

求一下 \(g\) 進行轉移即可

這其實是另一道題目


Luogu 2934

首先維護上一個最短路樹,然後考慮每個非樹上的邊\((x,y)\)對答案的影響

\(x\)\(y\) 的路徑上的點進行 \(ans_i=min(ans_i,d_x+d_y+w_{(x,y)}-d_i)\) 即可

這東西用樹剖會相當好寫

那咱寫個鬼的並查集

並查集的做法是按照 \(d_x+d_y+w_{(x,y)}\) 排序

用並查集維護是否更新,每條非樹邊更新路徑上的點值


不太難的題目吧,但是上來可能不會想到用dp……