原创 bzoj 1005: [HNOI2008]明明的煩惱

題意:給出標號爲1到N的點,以及某些點最終的度數,允許在 任意兩點間連線,可產生多少棵度數滿足要求的樹? 題解:Prüfer序列+組合數學+高精度 和1211差不多。 代碼: #include<bits/stdc++.h>

原创 bzoj 1227: [SDOI2009]虔誠的墓主人

題意:在一個n*m的矩形上,有一些格點是樹,有一些是墓地。一塊墓地的虔誠值定義爲以它爲中心的十字架的個數。十字架指的是在中心上下左右各選k棵樹。問最後虔誠值的總和。 題解:離散化+排序+樹狀數組+組合數學 好題。先離散化,然後

原创 bzoj 4517: [Sdoi2016]排列計數

題意:求有多少種長度爲 n 的序列 A,滿足以下條件: 1 ~ n 這 n 個數在序列中各出現了一次 若第 i 個數 A[i] 的值爲 i,則稱 i 是穩定的。序列恰好有 m 個數是穩定的 滿足條件的序列可能很多,序列數對

原创 bzoj 1226: [SDOI2009]學校食堂Dining

題意:食堂做一道菜的時間和前一道菜有關,爲(a or b)-(a and b),有n個人在排隊,可以調換順序,但每個人最多允許緊跟在他後面的b[i]個人比他先拿到飯。求最少時間。 題解:狀壓DP f[i][j][k] 表示前i

原创 bzoj 5060: 魔方國

題意:給出一個圖的點數和邊數。一個守衛可以守護它所在的點以及與從它所在的點出發,經過不超過k條邊所能到達的點。每種構圖都有一個最少守衛數,問所有的最少守衛數。 題解:假如圖是可以連通的,那麼一定可以只用一個守衛(從一個點連n-1

原创 bzoj 1222: [HNOI2001]產品加工

題意:有兩臺機器,給出n個產品在1號機器、2號機器、兩臺機器一起的加工時間,0表示不能以某種方式加工,問最快加工時間。 題解:DP 很強。f[i][j] 表示前i個產品,在2號機器上用了j的時間,1號機器用的時間。第一維滾一下

原创 bzoj 1567: [JSOI2008]Blue Mary的戰役地圖

題意:給出兩個正方形矩陣,問兩個正方形的最大子正方形的大小。 題解:直接二維哈希搞搞再二分就好了。 代碼: #include<bits/stdc++.h> using namespace std; int n,a[51][5

原创 c++中浮點數的儲存方式

馬上初賽了。複習。 首先是一個騷操作:直接輸出一個值在內存中的二進制值。 代碼: #include<bits/stdc++.h> using namespace std; void print(char x) { v

原创 bzoj 1570: [JSOI2008]Blue Mary的旅行

題意:在一個有向圖中,有t個人從1號點走到n號點,每條邊有容量,每天可以走1條邊,問最快幾天可以全部到達n號點。 題解:一開始讀錯題了。。枚舉答案,分層建圖跑最大流就好 數組開小調了一下午QAQ 代碼: #include<b

原创 bzoj 3738: [Ontak2013]Kapitał

題意已經夠簡短就不概括了吧。 題解: k最大是9,那就直接當所有都%109 吧。答案再保留k位就好。 把109 拆成29×59 ,假設我們知道CNN+M%29 和CNN+M%59 的值,我們就可以用中國剩餘定理或擴展歐幾里得求出答案

原创 bzoj 1808: [Ioi2007]training 訓練路徑

題意:在一個圖中,有一些邊組成了一棵樹,其他邊都有個權值。你可以刪除一些非樹邊使圖中沒有長度爲偶數的環,問最小代價。 題解:LCA+DP 我們可以把題目轉化爲選一些邊使權值最大。有個結論:最後一定是個仙人掌(一條邊最多在一個環裏)。那

原创 bzoj 1804: [Ioi2007]Flood 洪水

題意:好難概括。。自己看吧 題解:對偶圖+bfs 一面牆要不倒,就是它兩邊碰到水的時間是相同的。所以我們可以把原圖轉爲對偶圖,一面牆要不倒,對應的邊的兩個端點到【表示外面的點】的距離要相同。這個bfs一下就好了。重點就是如何轉成對偶圖

原创 bzoj 3578: GTY的人類基因組計劃2

題意:m個房間n個人,每次可以把一個人移到某個房間,或者問l~r房間的價值和。一個房間的價值定義爲這個房間裏的人數,但加入這些人的編號構成的集合已經詢問過了,即在之前的某次詢問中,有一個房間已經有完全一樣的人,不多也不少。 題解:每個數

原创 bzoj 1805: [Ioi2007]Sail 船帆

題意:有n根桅杆,第i 根的高度爲hi ,上面有ki 面帆,每面帆的推力折扣爲它後面同一高度的帆的數量。求最少產生多少推理折扣。 題解:貪心+線段樹 很明顯,桅杆的順序對結果是沒有影響的,所以我們可以先按高度排個序。對於每個桅杆,最優

原创 bzoj 3246: [Ioi2013]Dreaming

題意:給出一個森林,要把它們連成一棵樹,新連的邊的邊權爲L,問最遠的兩個點間的距離最短是多少。 題解:答案首先至少是每棵樹的直徑的最大值。考慮連起來的狀況,最優肯定是每棵樹直徑的中點連起來(即從這個點到其他點的最遠距離最短)。答案就是m