原创 POJ2375 Cow Ski Area

題意:給出一張地圖,一隻牛可以從高度大的地方走到高處小的地方,高度相同的地方隨便走,問最少連接幾個塊,可以使牛從任何一個點走到任何一個點。。 強連通,建圖很簡單,就是同樣高度建個雙相邊,有高度差是單向邊(高度大到高度小),然後tarjan

原创 ZOJ3471 Most Powerful

題意:有n個原子,每兩個原子碰撞就會 產生能量,並且一個原子消失,如果i碰撞j,那麼j消失。 開始還像做TSP那樣做,結果總是跑不對,原因是TSP經過了一個點就把他置爲了1,狀態只能從已經置爲1的點轉移到其他點上。 這題有個不同,就是從一

原创 Codeforces Round #277 (Div. 2)

A題。。。水題。。 #include<cstdio> #include<cstring> #include<algorithm> #define ll __int64 using namespace std; int main() {

原创 HDU1754 I Hate It (Splay)

題意:中文題。。。 以前用線段樹寫過。。現在學Splay,也來寫一下。。 用伸展樹來進行單點更新和區間查詢,單點更新就直接查選第k個直接查選到這個點然後再維護上去就可以了,,區間查選,因爲這裏是閉區間,所以要先把區間擴大一下(自己用手寫下

原创 ural1519 Formula 1

題意:求一些格子不能經過,可以經過的格子要經過的迴路個數。。 插頭DP入門題。。 用括號表示法寫的。。。爲了方便用了4進制。。0代表沒有插頭,1代表是(,2代表是) 總體就是分幾種情況轉移。。。 在格子可以經過的條件下。。 轉移就是 ##

原创 BZOJ2115 Xor

題意:找一條從1-n的路徑使路徑上的異或和最大。。。 高斯消元。。。。 如果當前走的這條路徑上走不到n,也就是說後面還要走回來,也就是同樣相同的數走了兩遍,所以異或出來的值就是位0,能夠改變異或和結果只能通過環了,所以記錄下所有環異或的大

原创 HDU4081 Qin Shi Huang's National Road System

題意:給出n個城市的座標和人口,兩個間的距離是歐幾里得距離,可以免距離連接一條路徑,要是免費連的那兩個城市的人口比上生成樹的距離比值最大。。 次小生成樹,先求出最小生成樹,然後枚舉生成樹上每一條邊,把他去掉,就形成來兩個連通塊,從兩個連通

原创 HDU3949 XOR

題意:求出從一堆數從任意取出幾個的第k小(去重)。。。 利用高斯消元求出他能組合成的數,然後用輸入的數按位去比較,對於每一位選或不選,選的話就把這個數異或上去,然後就是答案了,注意如果消元后行數比原來少了,就說明可以異或出0.。 #inc

原创 HDU4804 Campus Design

題意:給一張地圖,1代表這個地方可以放,0代表不可以,可以放c-d個1*1的方塊,其餘的只能放1*2的,問有多少種方法。 插頭DP,輪廓線DP,每一次都是從上一個狀態轉移到當前狀態。。#include<cstdio> #include<c

原创 HDU4472 Count

題意:給出n個點,組成一棵數,樹的每一層的節點的葉子節點的個數要相同,問有多少個滿足條件的數。。 DP,對於n個節點,先分離出一個節點當做根節點,然後假設它有i個孩子,如果(n-1)%i==0,這就說明他的孩子可以平均分配到i棵子樹中去,

原创 HDU3652 B-number

題意:給一個數字,問有多少個小於等於這個數且滿足包含13這個子串,滿足被13整除的數的個數。 數位DP,記憶化搜索實現,dp[i][j][k],i代表位置,j代表mod13剩下的值,k有3個值,0代表不包含13,1代表不包含13,但是當前

原创 ZOJ3229 Shoot the Bullet

題意:一共有n天,m個妹子,一個人至少要給第i個妹子排Gi張照片,他第i天只能拍di張照片,只能給ci個人拍照,問是否能完成任務,能完成最多能拍多少張照片,第i天給按順序輸入的妹子排幾張。。 上下界網絡流,先要知道怎麼求無源無匯網絡流(不

原创 HDU4819 Mosaic

題意:給出一個n行n列的矩陣,每次詢問一個二維區間,找出區間內最大值和最小值,去它們平均值,然後輸出,再插入那個點。 也是裸裸的二維線段樹,太渣。。寫了好久,更新的那個地方出了問題,第一層樹也要找到準確位置才更新,不是準確位置就從下面更新

原创 HDU4791 Alice's Print Service

題意:打印紙張,大於多少份多少錢一張,價格是非遞減的,紙張數是增加的。。 怎麼想的怎麼搞,就是有一個坑點,先二分出這個需求在哪一個紙張區間內,然後直接打印要花多少錢,多打印一些要花多少錢。。。 坑點就在多打印一些,不一定是多打印到需求所在

原创 HDU4800 Josephina and RPG

題意:給C(m,3)個隊伍之間取勝的概率,然後獲勝了可以選擇與對手換隊伍,也可以不換,問最大的勝率。 感覺就是一般的DP,狀態想出來了很好做了,dp[i][j]表示選擇了i這個隊伍對上j這關的勝率。。。 所以dp[i][j]=max(dp