原创 hdu4115 Eliminate the Conflict

題意:對,又是Alice和Bob玩起了石頭剪刀布。Alice知道Bob每回合要出什麼,現在對於Alice 有m個限制,每個限制由a,b,k三個數字來描述。 k == 0,則第a局和第b局 Alice出的相同。 k==1,則代表第a局和第b

原创 hdu4756 Install Air Conditioning

次小生成樹的變形 dfs得到最佳替代邊 假設兩個各自連通的部分分別爲樹A,樹B 用dp[i][j]表示樹A(i點所在的樹) 到 樹B(j點所在的樹)的最近距離(此然就是最佳替代邊) 注意0號節點相連的邊不會出錯 //#pragma co

原创 hdu4215 Moles

不錯的題目 笛卡爾樹+DFS+KMP匹配 這道題建樹複雜度過高,所以需要笛卡爾樹(隊友敲的這部分,不懂) 然後dfs得到模式串再直接匹配就好了 #pragma comment(linker, "/STACK:1024000000,10

原创 A Digital Satire of Digital Age

兩個天平 判斷兩邊的字母ascall碼值中1的個數是否相等 輸出比較麻煩 我是先根據高低畫出天平   再在天平的倒數第二行放上字母 #include <cstdio> #include <cstdlib> #include <cstr

原创 hdu1427 速算24點

</pre><pre> //#pragma comment(linker, "/STACK:102400000,102400000") //HEAD #include <cstdio> #include <cstring> #in

原创 uva11248 Frequency Hopping

題意:給定一個有向網絡, 每條邊均有一個容量。問是否存在一個從點1到點N,流量爲C的流。如果不存在, 是否可以恰好修改一條弧餓容量, 使得存在這樣的流。 先求最大流mf,如果mf >= C,則直接輸出possible 若暫時不存在,那麼

原创 uva11090 Going in Cycle!!

題意:找到圖中平均權值最小的迴路 思路:假設答案是val   那麼圖中的邊權值減去val,原來的迴路便會成爲負圈 val的值可以通過二分+spfa判負圈完成 //#pragma warning (disable: 4786) //#

原创 hdu4452 Running Rabbit

模擬每一步Tom和Jerry 的行動 注意相遇和轉彎判斷的先後順序 #include <cstdio> #include <ctime> #include <cstdlib> #include <cstring> #include <

原创 Uva1514 Piece it together

二分匹配   當時一看題覺得是最大流  就不停的試   兩百行代碼敲完  調試完 才發現建圖不對..... 後來想想   其實可以把黑色小塊拆成兩個   水平方向及豎直方向   兩個方向分別向各自方向白色小塊連邊 那麼匹配完全後才能輸出y

原创 hdu3666 THE MATRIX PROBLEM

這道題題號真吉利啊  這道題是判斷是否存在兩個數組a,b是的對給定的矩陣c滿足 L <= c[i][j] * a[i] / b[j] <= U   把乘除號   看作加減號  (或者直接兩邊取log) 那麼就是兩個不等式    轉換成差分

原创 hdu3729 I'm Telling the Truth

匹配模版題 看最大匹配數是否等於人數 要求輸出字典序最小   那麼反序匹配就好了 #include <cstdio> #include <ctime> #include <cstdlib> #include <cstring> #in

原创 hdu3682 To Be an Dream Architect

題意:一個三維空間中的一個立方體,每次給一條線,線所經過單位立方體被消去            最多一千條,問最終被消去多少個小塊 因爲只有一千條線,那麼可以記錄每個點是否消去過。對!可以map之   T!!  L!!  E!!  改成

原创 SGU536 Berland Chess

棋盤上白子只有一個國王  黑子給出 各子遵從國際象棋的走法 黑子不動,白子不能走進黑子的攻擊範圍以內 問白字能不能吃掉所有的黑子 直接搜索就好了,各子狀態用二進制表示 不過每個子被吃之後攻擊範圍會改變 所以重點是預處理每種剩餘棋子狀態的攻

原创 hdu4431 Mahjong

這道題直接考慮胡什麼不太好實現,所以直接枚舉34張牌,看是否能夠湊成胡牌 這裏需要注意一點,任意一種牌,數量不能超過四張 當時寫完之後一直超時,嘗試優化都失敗了 其實,枚舉完獎牌之後,dfs過程中若一張牌有,但是不能形成刻子或者順子,那麼

原创 最長上升子序列 nlogn

最長上升子序列中對於數ipt[i],向前遍歷,當數ipt[j]小於ipt[i] 則ipt[j]可作爲上升序列中ipt[i]的前一個數字 dp[i] = max{ dp[j] + 1 | j < i && ipt[j] < ipt[i]}