其他-私人♂收藏(比赛记录 Mar, 2019)
OwO
03.03 [USACO19JAN]
A. Redistricting
題意:給 \(g\) ,求 \(f(n)\) 。 \(f(i)=f(j)+[g(i)\ge g(j)],j \in (i-k,i]\) 。
離散化之后線段樹優(yōu)化 DP ;或者發(fā)現(xiàn)額外貢獻最多只有 \(+1\) ,單調(diào)隊列。
B. Exercise Route
題意:給一棵樹和一些路徑,求有邊交的路徑的對數(shù)。
把與 LCA 關(guān)聯(lián)的點都 \(+1\) ,查詢除 LCA 外路徑上的點。這樣除了兩條路徑 LCA 相同的情況外是沒有問題的。相同的時候開 map 暴力統(tǒng)計答案,也可以科學(xué)一點,最后把每個點作為 LCA 對應(yīng)的一堆二元組排序再統(tǒng)計答案。
C. Rain Tracking 2
題意:給 \(k\) ,以及 \(c_i=\min\{a_{i},a_{i+1},\cdots, a_{i+k-1}\}\) ,求合法 \(a\) 序列數(shù)量。
連續(xù) \(i\) 個相等的 \(c\) ,設(shè) \(x=10^9-c\) ,方案數(shù)是 \(f(i)=\sum_{j=1}^{k}x^{j-1}f(i-j)\) ,擾動一下得到 \(f(l+1)=(x+1)f(l)-x^kf(l-k)?\) 。
相鄰的 \(c_x>c_i\) 時,發(fā)現(xiàn)可以確定 \(c_i\) 對應(yīng)區(qū)間一個 \(a\) 的值,并且另外 \(k-1\) 個位置要滿足的限制是 \(\ge c_x\) 。當(dāng)前討論的是 \(c_i\) 的貢獻,所以長度 \(l\) 應(yīng)該減去 \(k\) ,然后再統(tǒng)計答案。
多個部分的答案乘起來就是最終答案。
03.14 [FJOI2018]
所羅門王的寶藏
限制如 \(a_i+b_i=c_k\) ,線性關(guān)系相加減還是線性關(guān)系,連邊之后任意給一個未知數(shù)一個值, DFS 判斷是否矛盾。
領(lǐng)導(dǎo)集團問題
% Newuser 大佬神仙貪心。
按第一關(guān)鍵字權(quán)值降序,第二關(guān)鍵字深度降序排序。討論點 \(p\) ,在到根路徑上如果有點被標記,把最近的點取消標記, \(ans\) 不變;如果沒有, \(ans+1\) 。然后標記自己。之后樹剖。
我想的是 DP , \(f(i,j)\) 表示 \(i\) 為根子樹內(nèi)選擇的點最小權(quán)值恰好為 \(j\) 的最大可選點數(shù)。
\[f(i,j)=\sum \max_{son,k \ge j}\{f(son,k)\}+[A(i)=j]\]
想把第二維合在一起用線段,使得真正維護的元素的后綴和,等于 \(f\) 的后綴最大值。
葉節(jié)點的信息顯然就是 \(A(i)\) 位置是 \(1\) ,其余是 \(0\) 的線段。
可以發(fā)現(xiàn)如果忽略 \([A(i)=j]\) ,直接把兒子合并(每一位置對應(yīng)相加),就能得到當(dāng)前節(jié)點的信息。
然后把 \(A(i)\) 位置 \(+1\) ,前驅(qū) \(-1\) ,就可以得到完整的信息了。有點差分的意思吧,可以發(fā)現(xiàn)這樣的確得到了正確的信息。
等等,前驅(qū) \(-1\) ,取消標記,那這本質(zhì)就是前面的神仙貪心?
代碼特別好寫, dsu +multi_set 可以 49 行寫完。
郵遞員問題
\(S,T\) 均兩條線段兩端時,畫圖運用三角不等式可以發(fā)現(xiàn)最優(yōu)路徑必不存在交叉的情況。
然后我就不明白了 QAQ 。咕咕咕。
Orz
10 + 0 +0 分,爆零預(yù)訂。
A 題以為不用圖論直接判標記,確定值就行。這樣不對,線性關(guān)系必須依次推,不能把兩堆東西合并之后判是否合法。這樣的話合法的情況也很有可能被判為非法。
B 題嘛……腦子有點亂,寫錯了迭代器。暴力被我誤刪了,太智障了。
C 題想到了 \(S,T\) 在兩端的結(jié)論,其他情況想枚舉分割線,因為情況太多所以隨機枚舉一部分,然后兩邊用 DP 求解。可行但不一定最優(yōu),感覺很不正確,感覺收益率不大,棄了。
好慘啊 Orz 。
03.22 [來自浙江的不可告人的比賽]
A 容斥還是常見套路的,然而我認定了不能從新圖推舊圖,在求舊圖上耗死了; B 題有點神仙,以為網(wǎng)絡(luò)流或者圖論,結(jié)果是生成樹 + 圖論; C 題需要考慮組合意義,沒聽明白,咕咕咕。
3.24 [51nod 2019 省選第二場]
A. 抽卡大賽
枚舉每個人,每張卡的 \(a\) 值 \(a_0\) ,然后 DP , \(f(i,j)\) 表示前 \(i\) 個人抽卡后恰好 \(j\) 張卡滿足 \(a_i>a_0\) ,然后算下貢獻,加上去。整體 \(O(n^4)\) 。
設(shè) \(t_i=f(n,i)\) 的 OGF 為 \(T(x)\) ,有 \(T(x)= \prod (p_i x + 1 - p_i)\) ,其中 \(p_i\) 是某個人抽卡 \(a_i>a_0\) 的概率,實際上是某人若干張卡片 \(p\) 值的和。
將所有人的所有卡片按 \(a\) 值排序,然后從大到小討論。每次移動對 \(T\) 的影響僅僅是某個 \(p_i\) 增加了一個值,除以舊的,乘上新的。一次除法操作是 \(O(n)\) 的,因為有每次除的都是以前乘過的東西這個性質(zhì)。乘法也是。
所以整體 \(O(n^3)\) ,據(jù)說多加 \(\log\) 會掛。
B. 異或約數(shù)和
整除分塊,需要求異或前綴和。打表可得它的循環(huán)節(jié)是 4 。
C. 小朋友的笑話
對于每個笑話,以人為下標建立線段樹。同時維護笑話和答案的線段樹。
勢能分析,對于笑話線段樹,其實是在不停涂黑色,涂色區(qū)間原來是純色區(qū)間時才可以結(jié)束。注意黑色區(qū)間是會合并的,并不會拖延之后的操作多次,整體就 \(O(n \log n)\) 了。
也可以用 set, map 之類的維護區(qū)間的并?差不多吧。
03.25 [USACO18DEC]
A.
設(shè)答案是 \(g(x)\) 有:
\[g(x)=\max\{f(x),\dfrac{g(x-1)+g(x+1)}{2}\} \tag{1}\]
注意 \(c=\max(a,b)\) 等價于 \(a \ge c, b \ge c\) 同時成立,且至少一個取等。
\((1)\) 式第二項限制使得:
\[g(x)-g(x-1) \ge g(x+1)-g(x)\]
對點集 \(\{(x,g(x))\}\) ,在 \(x\) 單增時,增量 \(h(x)=g(x)-g(x-1) \ge h(x+1)\) ,所以這個點集是一個上凸包。
對 \(\{(x,f(x))\}\) 建上凸包,如果點在凸包上,那就取 \(g(x)=f(x)\) 了;如果不在,增量 \(h\) 需要取等,就讓斜率取等,取 \(x\) 在凸包上對應(yīng)的值。實際上就是把點都取到凸包上。
B.
問題轉(zhuǎn)化,一個元素的移動并不影響其他元素的相對位置。最終集合單增,因此選取的集合的補集單增。為了最小化最終集合大小,應(yīng)該最大化補集大小,即求補集的 LIS 。原集第 \(k\) 小,因此求補集第 \(k\) 大 LIS 。
然后每個點維護二元組 \((len,f)\) ,表示以它作為開始的 LIS 長度和對應(yīng)方案數(shù), \(O(n \log n)\) DP 一下。
然后長度從大到小枚舉,注意相同長度的 LIS 對應(yīng)的開始位置的元素的值,從左到右單調(diào)遞減。由于求第 \(k\) 大,所以盡量先考慮大的,從左往右考慮。然后類似權(quán)值線段樹查第 \(k\) 大那樣的貪心,取一下就可以了。
注意每個長度取到元素了就 break 掉,并標記不要再討論左邊的元素,然后枚舉長度 \(-1\) 。算方案數(shù)的過程中和 \(10^18\) 取 \(\min\) (因為這個方案數(shù)隨便構(gòu)造一下,上界至少可以到 \((^n_{n/2})\) )。
C.
貪心,合法刪除過程中一直只有一個連通塊。每個先刪 \(a\) 才能刪 \(b\) 的限制連邊 \(a \rightarrow b\) ,樹邊當(dāng)作兩條單向邊。 \(a\) 為根的子樹答案是 \(0\) ,問題是不知掉根在哪里。類似拓撲排序,取出入度 \(1\) 的節(jié)點,更新周圍節(jié)點入度。最后剩下的點度數(shù)為 \(0\) ,就把它作為根,然后 DFS 一下,不要經(jīng)過 \(\{a\}\) 中的點,標記到的點答案為 \(1\) ,沒有到的點答案為 \(0\)。如果沒有這樣的點,說明有環(huán),畫圖可以發(fā)現(xiàn)所有點答案都是 \(0\) 。
Orz
記住先打暴力,這樣至少不會爆 0 吧……輸出格式,看好了小朋友!
03.26 [JSOI2018] [AGC]
A. 戰(zhàn)爭
裸的柯和( Minkowski Addition ),運氣可能比較好碰巧看過,就是求 \(\{c\}=\{a+b\}\) ,把兩個凸包上的輪廓向量極角排序之后再做一次凸包就可以得到 \(\{c\}\) ,然后判斷點是否在新的凸包內(nèi):二分,叉積。
B. 機器人
除了斜率 \(1\) 方向的格子全是同一個方向以外我好像啥也不懂,挖坑。
C. 列隊
貪心。找到最大的 \(t\) 使得 \(a_t \le k+t-1\) ,然后 \(t\) 就將兩邊的人劃分開,算答案時就不需要加絕對值符號了。
持久化線段樹,維護區(qū)間內(nèi)人的數(shù)量,人的位置的和,最右的人的位置,然后在遞歸中傳一下可以放人的區(qū)間,根據(jù)左區(qū)間最右的人的位置決定一邊貢獻答案,另一邊遞歸一下, \(O(n \log n)\) 。
然而卡常, awsl ,悄悄說一句被卡常的部分我空間也少開了一個 \(\log\) ,完蛋。
Orz
快一個月沒碰幾何了,差點裸題不會做,那真就白給了呀……
所以看了一波模板,補了兩個小東西:
[AGC021E Ball Eat Chameleions]
紅色和藍色,分別作為 \(x,y\) 坐標,枚舉紅球藍球數(shù)量 \(r,b\) ,轉(zhuǎn)化為 \((0,0)\rightarrow (r,b)\) 。
有的路徑不合法。貪心地,優(yōu)先先后給除一號寵物外的每個寵物 \(r,b\) ,無法做到時就給一號寵物。分析可以發(fā)現(xiàn)這樣盡量讓所有寵物變紅了。一號寵物的紅色球個數(shù)是 \(r-(n-1)\) 。
- 當(dāng) \(r>b\) ,如果 \(y-x \ge r-(n-1)\) ,那一號寵物就不能變紅了。
- 當(dāng) \(r=b\) ,如果 \(y-x \ge r-(n-1)\) ,或者最后一個球,也就是最后給一號寵物的球,是紅色,那一號寵物也不能變紅。所以這時路徑是 \((0,0) \rightarrow (r,b-1)\) 。
然后就是快速算不能經(jīng)過直線的路徑數(shù),用 Catalan 的分析方法算一算就好了。好神仙啊這題。
抱歉,我忘了名字
題意:序列中有 \(0,1\) 和通配符,相鄰三個數(shù)字可以變成出現(xiàn)最多次的那個,求最后剩下 \(1\) 的方案數(shù)。
wxh 的 DP 沒看懂,大概能理解“畢克自動機”做法。就是普通的自動機構(gòu)造,但是神奇地貪心了,有的狀態(tài)總是比能同樣能轉(zhuǎn)移到的另一個狀態(tài)好,所以每個點 \(0,1\) 對應(yīng)的轉(zhuǎn)移可以貪心地恰好構(gòu)造為唯一的,這很重要。然后跑匹配, DP 算最后停在某個節(jié)點的方案數(shù)。
序列自動機
聽到有大佬在說序列自動機,看了 OB's blog 里面 FJOI2015 那道序列自動機的題。就是維護每個字符后面添加一個字符能匹配到的最近的位置,類似鏈式前向星,用處是在公共子序列相關(guān)問題, \(O(|S| \cdots n)\)。聽說 PopoQQQ 用主席樹能把復(fù)雜度中字符集大小那里加個 \(\log\) ,沒仔細看,咕咕咕。
03.27 [某名校 NOI 模擬] [雅禮 2018 Day10]
A.
題意:長度 \(2n\) 的序列,比如 \(0829\) 是 good 的,因為 \(02+98=10^n\) 。給一個含通配符的序列,求是 good 的方案數(shù)。
性質(zhì)是兩個數(shù)字對位相加的結(jié)果做高到低是若干個 \(9\) ,一個 \(10\) ,然后若干個 \(0\) 。
然后枚舉 \(a\) 是結(jié)果為 \(10\) 的那個數(shù)字,即方案中一定有 \(a+b=10\) , DP 。
B.
題意:環(huán)上有一些權(quán)值,有一個點權(quán)均勻分布在 \([a,b]\) ,然后求什么概率。
把未知點權(quán)設(shè)為 \(x\) ,每個點的答案是一個一次函數(shù),假設(shè)已經(jīng)知道了。然后就是一些半平面 (\(k>0\)) 求上凸包,每條直線的答案的分子就是它在凸包上 \(x\) 坐標的差。
然后求那些一次函數(shù),發(fā)現(xiàn)可以 \(O(n)\) 暴力 \(1\) 號點答案,前綴和推出其他的點 \(i\) 作為起點的答案。但是由于環(huán)的性質(zhì)需要分類討論 \(j\ge i\) 和 \(j>i\) 兩種情況。
C.
咕咕咕。
A. 「雅禮集訓(xùn) 2018 Day10」足球大戰(zhàn)
式子寫出來,注意特判 \(p,q\) 為 \(0,1\) 的情況,因為不存在逆元。開空間,開常,只能 \(O(n)\) ,只能開一個逆元數(shù)組。
B. 「雅禮集訓(xùn) 2018 Day10」文明
據(jù) Newuser 大佬說是虛數(shù)裸題 世界樹 弱化版。某個點屬于一個國家的充要條件是距離最小,或者距離相等時,國家的行動標號最小。
C. 「雅禮集訓(xùn) 2018 Day10」貪玩藍月
裸線段樹分治,注意背包時需要開一個臨時變量存答案,因為模意義下不能簡單通過枚舉順序來保證物品僅有一個。
03.28 [小概率是雅禮集訓(xùn)]
A. arg
題意:給出長度 \(m\) 的序列,求 \(1\) 到 \(n\) 排列中, LIS 是該序列的個數(shù)。
DP 套 DP ,求 LIS 的一種做法是: \(f(i,x)\) 表示前 \(i\) 個數(shù)字,長度 \(x\) 的 IS 的最小末尾數(shù)字,然后每次貪心地更新狀態(tài),或者把當(dāng)前數(shù)字接到某個 IS 后面,作為當(dāng)前最長的 IS 的末尾數(shù)字。
按照套路,果然又發(fā)現(xiàn)第二維是單調(diào)不降的。所以如果隨便放數(shù)字而不是恰好放一個排列的話,直接差分,然后二進制狀壓內(nèi)層 DP 第二維就可以。考慮數(shù)字有限制時,對數(shù)字狀壓,三種狀態(tài):未討論,討論過并且在內(nèi)層 DP 的第二維,討論過但不在內(nèi)層 DP 第二維。每次枚舉未討論的數(shù)字進行轉(zhuǎn)移,如果放了一個給定序列中的數(shù)字 \(a_i\) ,需要保證 \(a_{i-1}\) 已經(jīng)討論過。模仿內(nèi)層 DP 更新狀態(tài),或者把數(shù)字接到末尾就行了。
B. bsh
題意:給三角剖分圖,邊權(quán)為 \(1\) ,詢問兩點間最短路。
類似 旅行者 (好像是這個名字),那是一道網(wǎng)格圖分治。這道題對多邊形分治就好了。
然而我碼力太差,寫了非常久,第一次用 vector<vector> 。
C. cti
題意:一些有向炮臺,可以打一炮,但是彈道不能相交,求最大收益。
網(wǎng)絡(luò)流。某條彈道過了交叉點,另外一邊就不能過。轉(zhuǎn)化一下限制,調(diào)整邊的方向,拆點,加上限制,跑最小割。
Orz
今天翻車了 Orz ……雖然一直很菜,不過……一言難盡。
三道題開場就看出了考察方向,然后挑了最熟悉的 DP 模型,以為是裸題能很快水過,然后 3h 過去了。分治題一開始以為是有簡單性質(zhì),最后一個小時才覺得只能分治。思路簡單,然而沒寫過類似的題,暴力。網(wǎng)絡(luò)流日常心理障礙,嘗試克服,無法克服,開始暴力,發(fā)現(xiàn)暴力打著真費勁,放棄。
然后就翻車了。
教訓(xùn):網(wǎng)絡(luò)流還是多想想吧,畢竟性價比比較高,不像復(fù)雜 DP 或者數(shù)據(jù)結(jié)構(gòu)之類的東西容易白耗時間。然后相信:我一定能在 30min 內(nèi)寫對 200 行代碼。
03.29
上午打我和 211 的互測題。
A 題裸 Mobius + 莫隊,成功用 \(n=m=a_i=100\) 的假樣例讓 hdhd 大佬看錯輸入格式,拍了一個小時沒掛,最后 10 分。我沒有被阿,嘿嘿。
B 題組合數(shù)求和,需要模型轉(zhuǎn)化,考慮一三象限有一些點,求路徑方案數(shù), DP 一下。
C 題正解是差分之后線段樹維護,找右邊第一個大于 \(v\) 的位置。 hdhd 大佬 map + 勢能分析通過。考慮許多單調(diào)區(qū)間,修改操作會使得一些區(qū)間合并,一開始有 \(n\) 個長度 \(1\) 的區(qū)間,修改操作只會增加至多 \(2\) 個區(qū)間。
03.30 [自閉省選模擬]
A.
題意:給一棵樹,有一些炸彈在節(jié)點上,造成的傷害每擴展一條邊就 \(-1\) ,直到為 \(0\) ,求每個節(jié)點受到的傷害和。
點分治,計算子樹中炸彈對其他子樹的傷害(實際上也貢獻到了炸彈所在子樹中,所以每次統(tǒng)計答案時需要對所有兒子再進行一次負貢獻來消除影響)。然后差分 + 后綴和統(tǒng)計每個深度的答案。
B.
小C的錦標賽弱化版, \(n=5000\) 。
題意:求至少含一個 \(k\) 元環(huán)的帶標號競賽圖數(shù)量。
考后補的競賽圖性質(zhì):
問題轉(zhuǎn)化:求至少包含一個 \(\ge k\) 元強連通分量的競賽圖數(shù)量。
先考慮 \(n\) 個點且包含 \(n\) 元強連通分量的競賽圖數(shù)量 \(f(n)\) ,設(shè) \(g(n)\) 表示任意競賽圖數(shù)量,枚舉點集中最小點最小的強連通分量,然后關(guān)聯(lián)的所有邊起點只能是該點集:
\[g(n)=\sum_{i=1}^{n}f(i)g(n-i)(^n_i)\]
再次轉(zhuǎn)化問題,設(shè)僅由 \(<k\) 元強連通分量組成的競賽圖數(shù)量 \(s(n)\) :
\[s(n)=\sum_{i=1}^{k-1}f(i)s(n-i)(^n_i)\]
答案是 \(g(n)-s(n)?\) 。然后變化一下式子,多項式求逆。
C
題意:給一棵樹,代價輕邊 \(1\) ,重邊 \(\lceil \log_2^{l}+1 \rceil\) ,葉子代價為到根代價和。求葉子代價最大值最小是多少?
正解神仙貪心 + DP ,長鏈剖分可過 60 。
Orz
注意卡常,調(diào)整心態(tài),信仰暴力能得分,就算 Subtask 什么的也要信仰。
03.31 [自閉 AGC030] [51nod 省選模擬 2019 第三輪]
AGC030 E
模型轉(zhuǎn)化,紅線藍線,選一個匹配, \(O(n)\) 計算當(dāng)前答案,總共 \(O(n^2)\) 。
AGC030 F
全 -1 時是 Catalan 數(shù),推廣, DP 。
[51nod] A.
兩個分母互素的分數(shù)之和為整數(shù),這兩個分數(shù)分別為整數(shù)。如果明白了這一點,并且會寫 Pollard Rho ,您就可以通過此題。
[51nod] B.
咕咕咕,神仙計數(shù)。
[51nod] C.
SBT 套 Trie ,可是我不明白 Trie 維護權(quán)值是什么意義,但據(jù)說這種操作是一種對給定區(qū)間排序的套路。
04.01 [長樂一中集訓(xùn)]
A. 遮天蔽日
計算幾何,多邊形重心。
B. 三元組
題意:求序列中 \(A[l,mid],B[mid+1,r]\) 滿足 \(A,B\) 是回文串的所有情況的 \(\sum l \times r\) 。
\(Ans = \sum x_i y_{i+1}\) , \(x_i\) 表示以 \(i\) 結(jié)尾的回文串的左端點下標和, \(y_i\) 表示以 \(i\) 開頭的回文串右端點下標和。 Manacher ,差分,前綴和。
C. 最優(yōu)價值
最大權(quán)閉合子圖。
Orz
又翻車了,再不提前打暴力我就 XX 。網(wǎng)絡(luò)流模型以為套不上最大權(quán),一直卡在最小割上了。主要是策略有問題,最后幾十分鐘一道題沒做,竟然還不打暴力,企圖搞出 C 題。
04.02 [HNOI 2018 省隊集訓(xùn) 6-25] [Newcoder 2018 ACM]
A. gift
題意:定義序列 \(A\) 變成到 \(B\) 的代價為需要執(zhí)行交換兩個位置的數(shù)字這個操作至少進行的次數(shù)。給兩個有空位的序列,求代價為 \([0,n-1]\) 的方案數(shù)。
神仙題。至少交換次數(shù)等于 \(n-p\) ,其中 \(p\) 為置換中循環(huán)節(jié)個數(shù)。如果兩個序列都是給定的,那么問題就是求環(huán)的數(shù)量。
對于空位,分為三類連邊:空位僅在左,僅在右,左右有。然后斯特林和容斥部分我還不太理解。
B. girl
題意:給出 \(a,b,c,n\) ,求 \(\sum_{0 \le i < j < k < n}ai+bj+ck\) ,滿足 \(i,j,k\) 中任取兩個均不存在于給出的限制集合 \(\{(x,y)\}\) 中。
沒有限制,算下 \(a,b,c\) 的系數(shù)就可以了,得到答案 \(s\) 。
有限制,設(shè) \(x\) 表示至少滿足 \(i,j\) 存在于限制集合的三元組的貢獻和,類似地,設(shè)出 \(y,z\) ,答案為 \(s-|x \cup y \cup z|\) ,容斥一下。
形如 \(|x|,|x \cap y|\) 的部分比較容易求,考慮計算 \(|x \cap y \cap z|\) ,即三元環(huán)的貢獻。
根據(jù) luogu 上的 post ,這個可以 \(O(m \log m)\) 做。對于無向圖,度數(shù)大的向度數(shù)小的定向,相等時根據(jù)標號隨便定一下。
這樣構(gòu)造的是一個 DAG 。然后:
for (0 <= i < n) {for (i -> j)mark[j] = i;for (i -> j)for (j -> k)if (mark[k] == i)papapa}string
SAM + LCT 。
[Newcoder] The number of circuits
看一下 BEST Theorem ,暴力高斯消元算下答案,扔進 BM 里。
所以營養(yǎng)成分主要是 BEST Theorem 和復(fù)習(xí)高消。
04.04 [FJWC2019 DAY1]
全連
一開始粗略算了下數(shù)據(jù)范圍以為要寫高精,看了下時限以為要用一個 long long 和一個 int 模擬高精卡常。然而并不需要,兩個限制,主席樹會爆空間,所以每次并不直接加入狀態(tài),扔到堆里面,需要用到的時候再拿出來,在線段上上做對應(yīng)修改。
原樣輸出
從后往前建立 SAM ,然后對于沒有轉(zhuǎn)移的點,連向上一個字符串的轉(zhuǎn)移位置,得到一張 DAG ,拓撲排序算一下從起點出發(fā)的方案數(shù)。
不同的縮寫
搜索 + 剪枝 + 二分圖匹配。一個串如果有超過 \(n\) 個子序列,一定可以完美匹配。
染色問題
題意: \(n \times m\) 的棋盤, \(c\) 種顏色。要求每行每列至少一個格子要染色,每種顏色至少出現(xiàn)一次,求方案數(shù)。
容斥一下,發(fā)現(xiàn)形如 \((-1)^i(^n_i)f(i)\) 的式子還可用二項式定理收起來, \(O(n^2 \log n)\) 。
子集
題意:求數(shù)列 \(\{a\}\) 所有子集中前 \(k\) 大的數(shù)和的和,對所有 \(i \in [1,n]\) 輸出答案。
設(shè)從大到小排名為 \(i\) 的數(shù)字為 \(a_i\) ,所有子集中第 \(k\) 大的數(shù)的和是 \(c_k\) ,有:
\[c_k = \sum_{i=k}^{n} (^{i-1}_{k-1})2^{n-i}\]
可以得到一個 \(c_k=\sum_{i=k}^{n} f_i g_{i-k}\) 的式子,卷積。
轉(zhuǎn)載于:https://www.cnblogs.com/ghcred/p/10471247.html
總結(jié)
以上是生活随笔為你收集整理的其他-私人♂收藏(比赛记录 Mar, 2019)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: servletcontext 使用解析
- 下一篇: Django内置权限扩展案例