原创 UVA-1609

這個題就是純構造,一旦找到“黑隊”和“白隊”的概念,就有一定的思路了。 後面就是構造四個階段。每一個階段的原則就是儘量讓白隊打黑隊,然後讓黑隊內部打,最後隨機分配。 #include<bits/stdc++.h> using na

原创 P1736 創意喫魚法

思路很明確,但是也有兩個坑 1.對角線包括左對角線和右對角線 2.每個狀態由三個值來取最小值,如圖。 一開始沒有考慮綠色,導致類似這樣的數據 4 4 1 0 0 1 0 1 0 0 0 0 1 0 1 0 0 1 最後dp[4

原创 P2279 [HNOI2003]消防局的設立

本來看着像是樹狀DP,但是狀態好麻煩。所以可以用貪心。 如果一個節點沒有消防局覆蓋,那麼在祖父節點處建立消防局最優 這個思想一開始想到了,奈何代碼能力不夠。所以借鑑了一下洛谷上的思路。 1.用d[i]儲存深度,b[i]來代表節點值。然

原创 P1373 小a和uim之大逃離

關鍵是狀態的選擇。我一開始使用了dp[i][j][k]表示 路徑終點爲(i,j)格差爲k時的種數 但是後來發現這樣的狀態轉移方程emmmm轉移過程中會出錯,而且會TLE。所以還是按洛谷上的題解 #include<bits/stdc++

原创 P1417 烹調方案

乍一看是01揹包問題,實際上不是 01揹包問題的寫法,是整個物品數組從前往後更新。當你更新第i個物品的時候,此時的狀態空間是前i-1個物品的最優解。也就是說已經隱含了 先更新,先選擇 由於01揹包問題的物品價值與其先後順序沒有關聯,所

原创 P1006 傳紙條

三維dp 主要是要找到描述狀態的數組。這裏可以將傳紙條來回的過程看作同時從左上傳兩張紙條給右下,且路徑不重複。由於路徑長度相等,所以說每一個時刻兩個紙條的i+j是恆等的。所以就可以用dp[sum][j][k]來描述每一個時刻兩個紙條所

原创 P1736 創意吃魚法

思路很明確,但是也有兩個坑 1.對角線包括左對角線和右對角線 2.每個狀態由三個值來取最小值,如圖。 一開始沒有考慮綠色,導致類似這樣的數據 4 4 1 0 0 1 0 1 0 0 0 0 1 0 1 0 0 1 最後dp[4][

原创 P1140 相似基因

1.因爲第一/二段的1與第二/一段的0匹配時可視作與空鹼基匹配,所以先進行一波預處理 2.狀態轉移方程 3.轉化爲數字和COST矩陣簡化代碼。 #include<bits/stdc++.h> using namespace std;

原创 P1280 尼克的任務

這個題雖然知道是dp,但是剛剛開始,思路尚不明確。 1.首先,這個題應該是從後往前推。因爲如果你選擇了一項任務,你現在的狀態是從未來的時刻轉移回來的。換句話說,你不能在這個時刻選擇這個時刻已經結束的工作。因此,應該從後往前推。 2.如

原创 P3368 【模板】樹狀數組 2

樹狀數組可以有兩類操作 1.區間查詢和點修改 2.區間修改和點查詢 這兩種操作的本質差別就是,tree數組的意義不同。在1中,tree數組是儲存的區間和,2中,tree數組儲存的是一個差分數組。這道題是用的2 如果tree數組是一個差

原创 P3374 【模板】樹狀數組 1

樹狀數組也是一種分塊數組,終極理解在這張圖上(網上偷的) 可以看到,每2^i個a[i]就有一個管理這一塊矩陣值的c[i]。而且有 x+lowbit(x)爲x對應父節點的下標 x-lowbit(x)爲x所管轄塊的前一塊的父節點的下標

原创 P1064 金明的預算方案

將附件用一個數組儲存到主件後面,然後對主件進行判斷 1.該主件沒有附件則有2個狀態:不選該主件,選該主件 2.該主件有一個附件,則有3個狀態:不選,選主件,選主件+附件 3.該主件有兩個主件,則有5個狀態:不選,選主件,選主件+附件1

原创 1141E - Superhero Battle

總體思路明確,但是犯了2個非常低級的錯誤。。。 1.判斷錯誤條件一開始寫的(mn>=0||d[n-1]>=0) 實際條件是mn>=0||(d[n-1]>=0&&H+mn>0 2.d[i]不是原來的傷害,而是從iter*n+0時刻開始

原创 1141D - Colored Boots

先同色匹配,再?匹配剩下的,再?匹配? 我的錯誤 1.我的理解是先?匹配其他色,再?匹配?,再同色匹配同色。。。。不知道哪裏出錯 2.對queue.empty()理解出錯。。。。當空返回1。好久 沒有打代碼了,犯下低級錯誤。 #inc

原创 1141C - Polycarp Restores Permutation

這個題好坑。。。如果給你一個很大的數(42樣例中爲10738),再加上199992個數,就會讓mx達到21億,讓int溢出,RE的結果。所以在循環的過程中,就要判斷最大值是否比最小值大N,如果已經大N了,則沒有解,直接退出。 本題不成