论逗逼的自我修养——BZOJ第一页计划
感覺都干了這么久BZOJ了,還沒有上第一頁有點(diǎn)對(duì)不起我的300塊大洋,打算在WC前淦上第一頁。
upd 1. 2 : 以奇怪的姿勢(shì)做完了cerc2014感覺感覺做了3天做了沒幾道不太水的題,今天又以刷完cerc2014的理由水了一波傻逼題也是挺愉♂悅的。
upd 1.14 : 感覺刷水絲毫沒有前途。。。這個(gè)就慢慢補(bǔ)吧。。。下學(xué)期前我肯定會(huì)做好的。
upd 2.23 : 劃了波水就上了。
現(xiàn)在都淦了65個(gè)題了
【BZOJ3631】 看著n挺大,我們考慮使用差分,然后維護(hù)下子樹和。
【BZOJ2780】 AC自動(dòng)機(jī)可以直接秒,其實(shí)我是想到SAM也能做。建個(gè)多串SAM,然后就變成子樹的顏色數(shù),離線搞一搞就可以了。
【BZOJ3165】 直接暴力線段樹,然后暴力維護(hù)點(diǎn)標(biāo)號(hào),這樣的復(fù)雜度是nlognlogn的。
【BZOJ3240】 爆算式子,可以發(fā)現(xiàn)就是幾個(gè)求和,擼一擼就好了。
【BZOJ1172】 發(fā)現(xiàn)每個(gè)數(shù)有用的只是gcd(x, k)的值,而且k的約數(shù)很小,那么考慮直接dp它們的gcd(..., k)的值就可以了。
【BZOJ3172】 AC自動(dòng)機(jī)。
【BZOJ3170】 經(jīng)典題。
【BZOJ3210】 同3170.
【BZOJ1071】 我們考慮(min_s, min_h)對(duì)應(yīng)的一個(gè)集合S,那么(min_s, min_h+1)對(duì)應(yīng)的集合不過是S上加一些值再減掉min_h的點(diǎn),那么考慮直接枚舉min_s, min_h然后單調(diào)維護(hù)就可以了。
【BZOJ1041】 很容易知道\(2r=d(a^{2}+b^{2})\),其中\(zhòng)(d=gcd(r+x, r-x)\), \(r+x=da^{2}\), \(r-x=db^{2}\),我們枚舉d,然后再枚舉a就可以了,注意到如果對(duì)于合法的a, b如果交換他們的值對(duì)應(yīng)的x, y是不變的,那么就將a枚舉的值縮一半就可以了,最后乘4加4就可以了。
【BZOJ1019】 令\(f_{i,j}表示把i個(gè)盤子在j個(gè)柱子上的移到g_{i,j}上的步數(shù)\),然后類似hanoi的遞推就能做了。
【BZOJ3000】 用stirling公式化一化,小數(shù)據(jù)暴力,大數(shù)據(jù)近似就可以了。
【BZOJ4048】 考慮一個(gè)區(qū)間在[l,r]內(nèi),那么我對(duì)于包含在內(nèi)的一個(gè)最大長度一定要搞,那么我們就可以這樣dp。令\(dp_{l,r}\)表示在\([l,r]\)中的最小代價(jià),因?yàn)橐欢ㄒ_掉那個(gè)最大長度,我們就可以直接暴力合并了。
【BZOJ3928】 同4048,雙倍經(jīng)驗(yàn)。
【BZOJ4050】 暴力。
【BZOJ4047】 一開始看錯(cuò)題了,囧。。。考慮直接\(dp_{i,j}\)表示到第i個(gè)物品被開了j個(gè)消失,這樣羅一羅就好了。
【BZOJ4042】 這題讓我想到了個(gè)多校題,那個(gè)做法是\(nlogn\)的,區(qū)別僅在不共邊和不共點(diǎn)上,不共邊的話我們可以考慮在每個(gè)邊上多造一個(gè)點(diǎn),然后每個(gè)path兩端都往里縮一格就可以了。學(xué)習(xí)了下其他的姿勢(shì)覺得很厲害啊,令\(dp_{u}\)為u子樹的最大值,再搞出子樹中每個(gè)點(diǎn)多余的匹配位置,在u上可以用集合dp做。
【BZOJ4347】 dp下余數(shù)和異或值就可以了。
【BZOJ4325】 noip時(shí)候?qū)懻?#xff0c;感覺這個(gè)在uoj上也能被卡掉,并不知道為什么沒人卡。
【BZOJ4045】 保持比例暴力就可以了。
【BZOJ4044】 顯然肯定要搞一個(gè)回文其他直接添加,那么就是搞出所有回文的構(gòu)造最小步驟數(shù)。考慮用回文樹就能夠快速搞咯。
【BZOJ4043】 顯然的我們發(fā)現(xiàn)如果第i-1位的關(guān)系方案數(shù)給弄出來那么第i位就能搞出來,然后我不會(huì)討論就想了另一種方法。令\(dp_{i,j}\)表示前i位組成了第j中關(guān)系,那么我們?cè)龠f推一個(gè)\(trans_{a,b,c1,c2,c3}\)第a種關(guān)系擼到第b種當(dāng)前的值是c1,c2,c3的轉(zhuǎn)移方案數(shù),這樣就可以做了。
【BZOJ4387】 可以分治一維然后考慮合并兩個(gè)塊,那么就是two pointer掃一掃就可以了。
【BZOJ4378】 令不小于s的數(shù)個(gè)數(shù)為cnt個(gè),小于s的和為sum,那么如果\(sum>=(c-cnt)*s\)那么就可以了,否則就爆了,這樣弄一個(gè)線段樹搞一搞就可以了。
【BZOJ4049】 這道題好像類似的做過?線段樹上套凸包二分下就好了。
【BZOJ4046】 考慮從大到小做生成樹,每次我們?nèi)右粋€(gè)邊進(jìn)去就有邊會(huì)出來,由于需要在線維護(hù),就可以使用可持久化線段樹維護(hù)當(dāng)前邊集。
【BZOJ1072】 dp下余數(shù)和數(shù)集就可以了。
【BZOJ1060】 搞出一個(gè)最大鏈,然后貪心亂搞一發(fā)就好了。
【BZOJ1067】 分類討論,用線段樹什么維護(hù)維護(hù)。
【BZOJ1068】 dp維護(hù)最右邊的M的位置就可以了。
【BZOJ1085】 因?yàn)橛猩辖?#xff0c;所以用迭代dfs+啟發(fā)式函數(shù)優(yōu)化。
【BZOJ1086】 塊狀樹的構(gòu)造。dfs一下,維護(hù)不管前面剩余與下面的搞一搞構(gòu)成塊,剩余的和上面合并一下,這個(gè)用dfs很容易自底向上維護(hù)。
【BZOJ4385】 單調(diào)隊(duì)列做一做。
【BZOJ4377】 弄了很久,可以搞出一開始一個(gè)可能合法的區(qū)間然后對(duì)它+a到下一個(gè)區(qū)間然后搞出這些可取不可取的區(qū)間,做一個(gè)不可取的并減一減,然后特判末尾。
【BZOJ4275】 我們弄幾個(gè)dp分個(gè)段搞一搞就是O(n^2)了。
【BZOJ4276】 二分圖匹配做一下就好了。jiangshibiao告訴我這是一個(gè)原題。。。很厲害的樣子還沒做馬克一下。
【BZOJ4277】 移動(dòng)r,然后前面兩個(gè)手推一個(gè)東西出來,那么就是顯然的。
【BZOJ4278】 比較下后綴的大小,貪心取一取就可以了。
【BZOJ4281】 倍增。
【BZOJ3157】 我們可以令\(f(k)=\sum_{1<=i<=n}i^{k}m^i\),用\((m-1)f(k)\)就很容易拆分計(jì)算了。就能\(O(n^2)\)進(jìn)行遞推。
【BZOJ3516】 雙倍經(jīng)驗(yàn)。
【BZOJ4280】 維護(hù)上下界和一個(gè)加的標(biāo)記,用線段樹維護(hù)。
【BZOJ4321】 被告知oeis大法有線性遞推并不能理解。我們可以dp連通性就可以了。
【BZOJ3620】 顯然對(duì)i...n造KMP暴力搞就可以了。
【BZOJ1089】 令\(f_{i}\)表示深度不超過i的樹個(gè)數(shù),那么\(f_{i}=f_{i-1}^{n}+1\),就高精下咯。
【BZOJ1002】 我就是來水一下的,拿了公式搞一搞。
【BZOJ4327】 AC自動(dòng)機(jī)裸題?!?/p>
【BZOJ4350】 令\(f_{i,j}\)表示[i,j]的組成的個(gè)數(shù),分()(S),((S)),((S))(S'),折三類搞,可以維護(hù)一個(gè)\(s_{i,j}\)表示對(duì)于1~i的中在1~j中的右括號(hào)數(shù),這樣就方便轉(zhuǎn)移了。
【BZOJ3212】 線段樹裸題。
【BZOJ4293】 考慮到交換位置不影響結(jié)果,那么我們從小到大,用線段樹亂搞就可以了。
【BZOJ1101】 上古題目,用低水平姿勢(shì)就能推出來了。
【BZOJ2801】 對(duì)于一個(gè)連通分量,對(duì)一個(gè)點(diǎn)設(shè)一個(gè)x,然后遞推一發(fā)。
【BZOJ2799】 從小到大考慮,我們搞出以前沒用的且不被覆蓋的權(quán)值,還有維護(hù)當(dāng)前沒被覆蓋的權(quán)值,如果這兩個(gè)等于一個(gè)子樹且從上到下如果只有一個(gè)后繼,那么該點(diǎn)能被推出來,否則就是能搞出沒用且不被覆蓋的權(quán)值個(gè)數(shù)。
【BZOJ4373】 維護(hù)hash值然后用線段樹搞一搞。
【BZOJ4390】 樹上差分,dfs序維護(hù)。
【BZOJ4392】 線段樹。
【BZOJ3943】 最大生成樹。
【BZOJ3940】 AC自動(dòng)機(jī)。
【BZOJ4396】 set搞一搞。
【BZOJ3123】 啟發(fā)式合并+可持久化線段樹。
【BZOJ3743】 學(xué)習(xí)了一種O(n)的姿勢(shì),先搞出K個(gè)點(diǎn)的最大生成樹,然后考慮點(diǎn)在內(nèi)在外,跑跑bfs就行了。
【BZOJ1815】 由于整數(shù)拆分的方案很少,直接上burnside就可以了,點(diǎn)的置換可以對(duì)應(yīng)邊的置換,塊內(nèi)n/2,塊間gcd(i,j)。
【BZOJ3488】 感覺是個(gè)很顯然的題不知道為什么沒什么人過,可以用線段樹合并或者可持久化線段樹都能做。
【BZOJ3221】 可持久化線段樹就能夠做了。。。我們之后就只需要麻麻麻就可以了。
【BZOJ3514】 用LCT維護(hù)需要彈哪一個(gè)邊,這樣可持久化線段樹維護(hù)一波就可以了。
轉(zhuǎn)載于:https://www.cnblogs.com/YJMWOI/p/5080269.html
總結(jié)
以上是生活随笔為你收集整理的论逗逼的自我修养——BZOJ第一页计划的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我的 FPGA 学习历程(11)—— 实
- 下一篇: LeetCode - Valid Num