原创 bzoj1076 [SCOI2008]獎勵關

傳送門 狀壓+概率dp 思路比較好想,但是過程中會出現不可能達到的情況,所以要倒着dp CODE: #include<cstdio> #include<iostream> using namespace std; double

原创 bzoj3999 [TJOI2015]旅遊

傳送門 樹鏈剖分+細節。 //md居然把dfs和LCA寫掛了,以後沒法見人了【捂臉 這道題要求查詢樹上連續的一段區間,但是有起點和終點之分,所以線段樹和樹鏈剖分就不能像平時一樣寫;線段樹還比較好寫,但是樹剖在查詢的時候還要分靠

原创 bzoj2342 [Shoi2011]雙倍迴文

傳送門 參考題解 一道很好的manacher練手題。。 一開始把題讀錯了,以爲是w1w′1w2w′2 形式的就可以,題目哪有這麼簡單 觀察題目,我們可以發現:對於每一個符合條件的子串,都有j+p[j]>=i , j < i

原创 cogs526 愛爭吵的猴子

傳送門 左偏樹。 每次合併的時候取出堆頂,然後合併堆頂的左右兒子,最後將堆頂所代表的猴子的強壯值減半扔到左偏樹裏。 維護父親的時候用並查集實現。 實現的時候有些細節需要注意。 CODE: #include<cstdio> #

原创 cogs721. [SDOI2007] 線性方程組

傳送門 人生中的第一個正確的高斯消元(第一個由於數據太水錯誤的代碼也過了) 判斷無解和無窮多解的方法非常神奇 CODE: #include<cmath> #include<cstdio> #include<iostream> u

原创 bzoj4515 [Sdoi2016]遊戲

傳送門 樹鏈剖分和李超線段樹共同食用。 與之前的單點查詢李超線段樹不同,這道題要求區間查詢,而李超線段樹的本質是一種標記永久化,所以我們要在查詢時判斷區間左右進行計算。 兩點間距離可能非常大,一定要開long long!(這個

原创 COGS1442 [NOIP2013] 華容道

傳送門 這道題我做了三天,非常chishi(其實還是自己太弱) 第一眼看到這題:hash!(於是寫了雙hash只得了50,改成單hash得40。。。) too naive noip day2T3怎麼會有這麼水 正解:強行建

原创 bzoj3196 Tyvj 1730 二逼平衡樹

傳送門 終於把這個大坑填完了。。。 sb樹套樹 看似最不合理的方案恰恰是正確方案,樹套樹並不會MLE,它的空間複雜度非常科學,O(nlogn)。(結果因爲空間算錯數組開小神奇的T掉,浪費了我兩天時間) 嘛。貌似除了操作二沒什麼

原创 【題目整理】

計算幾何 bzoj1038 [ZJOI2008]瞭望塔 半平面交。 #include<cmath> #include<cstdio> #include<algorithm> using namespace std; const d

原创 noip2015 運輸計劃

bzoj傳送門 COGS傳送門 二分答案比較容易想到,但是對於判斷不太好進行,所以要使用新知識:樹上差分。 對於二分出的時間,我們需要判斷所有的運輸計劃是否在添加一個蟲洞以後都達到要求,所以我們首先將所有計劃按照距離排序,將大

原创 bzoj1923 [Sdoi2010]外星千足蟲

傳送門 高斯消元,使用過的最晚的數據編號即爲答案。如果存在自由元則說明無解。 CODE: #include<cstdio> #include<iostream> using namespace std; const int N=2

原创 poj1830 開關問題

傳送門 高斯消元。 對於每一個開關都有兩種選擇,我們只需要對於每個開關以及對應結果用高斯消元求解亦或方程即可,有多少自由元答案就是2的幾次方。 好像用bitset會更快,但是並不會用,改天學學。 CODE: #include<

原创 bzoj4719 [Noip2016]天天愛跑步

傳送門 終於把去年noip的坑填完了啊。。。好可怕。。。 這道題的做法是LCA+差分+桶。(其實只能算是半個差分) 首先我們要確定搜索對象。玩家的數量那麼多而且還在移動顯然不能成爲搜索對象。所以我們要搜索的是觀察員。 然後我

原创 bzoj1227 [SDOI2009]虔誠的墓主人

傳送門 一上來先想到n2 做法,即枚舉每一個墓地,排列組合計算虔誠度,但這個時間複雜度是不現實的,所以要進行轉化,改爲用枚舉常青樹來計算相鄰常青樹間墓地的虔誠度之和,由於兩個相鄰的常青樹之間的墓地左右的常青樹數目都是相同的,所以問

原创 bzoj1103 [POI2007]大都市meg

傳送門 本來是爲了刷dfs序的題目的,但是用了樹鏈剖分做。。。 題目輸入解釋有點問題,但是應該能理解 CODE: #include<cstdio> const int N=250005; const int INF=1e9; s