原创 codeforces 293B Distinct Paths

n,m<=1000是在逗你玩。。。 因爲n+m-1>k無解啦。。。k<=10。。。 暴力大法好。。。 我們從左上向右下枚舉棋子,遵循每次只放放過的棋子或者沒放過的編號最小的棋子(當然是符合題目要求的情況下),最後用組合計數搞一搞即可以啦

原创 codeforces17E Palisection

求母串中互相交的迴文串對數。 迴文樹練習題。 求相交的不好求,但是我們很容易求出不相交的(精華所在!要學會逆向思維!) 用迴文樹求出在此處開頭和結尾的迴文串非別爲多少,直接搞就可以了。 #include <cstdio> #includ

原创 [bzoj 1484] HNOI2009 通往城堡之路

找了別人的程序看了好久,終於大概理解做法了。。 按第一個點的值可以搞出每個點的下界:b[i]=a[1]-(i-1)*d 這樣每次我們可以把操作變成增加一些值,儘量使代價減小,並最終使a[n]=b[n] 每次選擇對結果影響最優的點j(代價增

原创 省選模版複習——LCT

bzoj2157 LCT裸題 #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int INF=1e9; cons

原创 省選模版複習——費用流

bzoj3876 支線劇情 其實也是2014江蘇的題 上下界的費用流很裸吧 其實也可以利用圖的特殊性把他轉化成普通的費用流 比較一下時間,普通費用流有時還是很明顯的 //普通費用流 #include <cstdio> #include

原创 KD-Tree入門

經過這幾天研究kd-tree,我可以說kd-tree就是按照基本的思路隨便寫就可以了嗎? 以二維平面爲例,在二維平面上有若干點,我們如何建立kd-tree? 第一層以x座標的中位數將所有點分爲兩部分,分別放到左右子樹上,第二層以y座標的爲

原创 [bzoj 3626] LNOI2014 LCA

神題! 雖然想到離線,但是還是隻會隨機數據的做法。。。。 有一個比較有意思的結論:把點i到根的所有點權值設爲1,其他點爲0,此時j到根的所有點權和即爲dep[LCA(i,j)] 不難發現,這個方法滿足加法性質。 把詢問查分,從1到n處理每

原创 CDQ分治優化DP

昨天被學軍的公開賽虐傻了,才發現自己還不會用CDQ優化DP,嚇得趕緊去填坑。。。 普通的CDQ就是對二分操作,計算前半部分的插入對後半部分的詢問的影響。 那麼如何用CDQ優化DP呢? 看一道例題: NOI2007 cash 不難推出平方的

原创 [bzoj 2653] middle

陳老師的神題,先拜一下 求中位數用二分的方法很容易想到。 可以想到我們把二分到數x後,把小於x的定義爲-1,大於等於x的定義爲1,只要求出一個子序列和大於等於0就說明中位數大於等於x(題目中的n/2是向上取整的) 然而之後我並不知道怎麼做

原创 XJOI NOI2015訓練題7 題解

T1、 原本以爲是水題的,但是題目裏有這麼一句話”不模1e9+7“。。。。 可以注意到上下左右都要求單調增,那麼狀態就很好確定了 f[i][j]表示第一行放了前i個格子,第二行放了前j個格子,並且這些數都是小於等於i+j的 轉義很好寫:f

原创 [bzoj 4080] Wf2014 Sensor Network

will講的題,網上幾乎都是用隨機化算法過得,代碼短的出奇,爲了維護標算的尊嚴,我決定推廣一下表算。。。。 你敢信這題是二分圖最大獨立集!? 枚舉距離不超過d的兩個點,已這兩個點爲圓心,距離爲半徑分別作圓,會形成如下的圖形 可以看到上半

原创 [bzoj 2654] tree

跪神題,跪秒題大神zy! 很多人的第一想法就是選前need小的白邊,再放黑邊,很不幸這是錯的 正確解法很有啓發性。 如果我們按照正常的選邊來做最小生成樹,如果選出的白邊大於need條,我們就需要少選一些的白邊,否則我們就需要多選一些白邊。

原创 [bzoj 3531]sdoi2014 旅行

一眼樹剖題 對每種顏色開一顆線段樹,動態開點,記錄最大值與和,查詢直接查找,修改的話只會修改單點,所以最多增加2logn個節點 (原來把題目看錯了,以爲修改也是修改連續一段的,似乎這樣空間會大很多) #include <vector>

原创 後綴自動機初步

想學這個算法很久了 省選結束後終於下定決心好好學學! 先推薦兩篇文章 http://hi.baidu.com/myidea/item/142c5cd45901a51820e25039?qq-pf-to=pcqq.group http://

原创 莫隊算法小結

終於把糖果公園a掉了,寫點小結冷靜一下(由於博主現在思維混亂,所以請用混亂的思維來閱讀本篇文章) 1、小z的襪子 這算是鼻祖了吧。 把序列分成sqrt(n)塊,把詢問先按左端點所在的塊順序,再按右端點升序排序,可以證名這樣暴力移動左右端點