原创 【bzoj1975】[Sdoi2010]魔法豬學院 A*

A*算法還是比較有意思的,本來以爲就是個搜索加減枝,現在看來是有複雜度保證的 我們到一個狀態後,處理出當前狀態的估價函數,每次選擇估價函數最小的來更新 估價函數g(n)的選取,若g(n)=實際值時,是有時間複雜度保證的,並且每次得到的答案

原创 【bzoj3624】[Apio2008]免費道路 貪心+並查集

特殊邊加完後,剩下的聯通塊越少,使用的普通邊越少。 考慮特殊邊如何加? 首先,把特殊邊中必須加的邊加入,如果必須加的邊數>k或者原圖不連通,則無解。 之後,把特殊邊能加則加,即不形成環就加入,直到加入k條。 若都加完後還不夠k條,則把剩下

原创 【bzoj4006】[JLOI2015]管道連接 斯坦納樹+子集dp

f[i][S]表示使S集合中的點聯通的最小值 g[S]表示把顏色爲集合S的點聯通的最小值 g[S]=min{g[s]+g[S-S]} g[S]=f[i][SS] SS中的點均爲S集合中的顏色 跑的死慢,感覺正解應該比我的簡單吧 #inc

原创 【bzoj4571】[Scoi2016]美味 主席樹

只能想出個大概 沒有加法是主席樹 有了加法對應的就是主席樹上一個區間而不是一個兒子了 查詢的時候,並不是在主席樹上查詢,而只是一種線段樹式的查詢 如果+x後[l,mid]或[mid+1,r]有數,則往對應方向走 查詢[l,mid]和[mi

原创 【bzoj2753】[SCOI2012]滑雪與時間膠囊 最小生成樹

遇到一個比較有意思的題目,寫出來看看。 如果沒有高度相等的點,那麼就是一個有向無環圖的最小樹形圖,貪心的讓每一個點選入邊中權值最小的就可以 加上了高度相等的點後,變成了部分無向的最小樹形圖,或者說是一個分層後的最小生成樹 因爲,層與層之間

原创 【bzoj2809】[Apio2012]dispatching 主席樹+dfs序

這分明就是一道主席樹傻逼題呀,在dfs序上建出主席樹,每次在主席樹上二分就可以了。 #include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #includ

原创 【bzoj4602】[Sdoi2016]齒輪 dfs

我竟然會忍痛寫了這道題,邊寫邊想罵人,mdzz dfs一遍就可以,取對數後乘除化加減。 考場上能讓直接long double乘的人過去了,出題人我也是服了。 #include<cstdio> #include<cstring> #inc

原创 這一陣子的總結吧……

比較匆忙,今天剛剛趕回青島,過幾天又是高考中考,所以在家裏可以歇幾天…… 本來打算明天再寫,因爲名額大概是明天才能確定下來,不過應該是個D吧 5月份是一個糟糕的月份,狀態不好?男人嘛,一個月總有那麼三十幾天…… 月初CTSC、APIO的慘

原创 【bzoj1369】[Baltic2003]Gem dp

怎麼又刷水題? f[i][j]表示以i爲根的子樹i的權值爲j的最小總權值 咦?這不是O(n^2)的嘛? SDOI2015R2D2T2 doc證明了整棵樹最多隻能用到O(log n)種顏色 %考場上敢自信開大數組的人 #include<c

原创

挖坑 1、FFT和生成函數 2、奇怪的曼哈頓生成樹 3、後綴自動機 4、李超線段樹 5、通刷一下NOI題目 6、在SDOI和JLOI中選一些題 7、在ZJOI和HNOI中選一些題 8、寫模擬賽的總結 點贊 收藏 分

原创 【bzoj4569】[Scoi2016]萌萌噠 倍增+並查集

確實挺有意思的,暴力就是並查集直接縮,O(nm) 如何快速維護區間是否對應相同?倍增!!! f[i][j]表示i開始的2^j個字符與誰對應相同,若f[i][j]=k,則從i開始的2^j個字符與從k開始的2^j個字符對應相同 利用RMQ的思

原创 【bzoj1068】[SCOI2007]壓縮 區間dp

比較有意思的題目就拿來寫一寫 很明顯的區間dp模型,狀態很好設計,但是轉移的時候有一些小注意 因爲一開始我們可以看做左端點有一個M f[l][r][0/1]表示區間[l,r]中間是否加入了M,默認在L-1處有一個M時的最小長度 f[l][

原创 【bzoj4568】[Scoi2016]幸運數字 線性基+樹鏈剖分

什麼鬼東西呀? 就是把兩個線性基合併的過程放在線段樹上,倍增可做,反正我寫的樹剖,聽說學校裏某人在某次考試的考場上的O(nlogn)算法被O(nlog^2n)的樹剖秒成渣了。 異或沒打括號,調了好久。 #include<cstdio>

原创 【bzoj4570】[Scoi2016]妖怪 凸包

二分竟然過不去,真可惡。 二分答案,判斷每個點是否可行,轉換成解二次不等式,在數軸上求交集。 TLE 正解是凸包。 n個點(x,y),在點(x,y)處的斜率爲k(k<0)的直線得到的答案爲橫縱截距之和,即x+y-x*k-y/k 單獨使點(

原创 【bzoj1086】[SCOI2005]王室聯邦 樹分塊

比較有意思的題目,聽說這是樹分塊的裸題? 我們開一個棧,遍歷一個節點,若該節點的幾棵子樹的大小>=B,那麼就把他們分到一塊,省會爲當前節點 這樣做會剩下不到B個節點,這時候就利用棧傳到上一層節點就可以 最後會剩下不到B個節點,因爲我們原來