描述
小hi和小ho本著禮讓他們的心情——當然還因為本來他們買的就是站票,老老實實的呆在兩節車廂的結合處。他們本以為就能夠這樣安穩抵達目的地,但 事與願違,他們這節車廂的乘務員是乙個強迫症,每隔一小會總是要清掃一次衛生,而時值深夜,大家都早已入睡,這種行為總是會驚醒一些人。而一旦相鄰的一些 乘客被驚醒了大多數的話,就會同乘務員吵起來,弄得大家都睡不好。
將這一切看在眼裡的小hi與小ho決定利用他們的演算法知識,來幫助這個有著強迫症的乘務員——在不與乘客吵起來的前提下盡可能多的清掃垃圾。
小hi和小ho所處的車廂可以被抽象成連成一列的n個位置,按順序分別編號為1..n,每個位置上都有且僅有一名乘客在休息。同時每個位置上都有一 些垃圾需要被清理,其中第i個位置的垃圾數量為wi。乘務員可以選擇其中一些位置進行清理,但是值得注意的是,一旦有編號連續的m個位置中有超過q個的位 置都在這一次清理中被選中的話(即這m個位置上的乘客有至少q+1個被驚醒了),就會發生令人不愉快的口角。而小hi和小ho的任務是,計算選擇哪些位置 進行清理,在不發生口角的情況下,清掃盡可能多的垃圾。
提示一:無論是什麼動態規劃,都需要乙個狀態轉移方程!
提示二:好像什麼不對勁?狀態壓縮**去了?
輸入每個測試點(輸入檔案)有且僅有一組測試資料。
每組測試資料的第一行為三個正整數n、m和q,意義如前文所述。
每組測試資料的第二行為n個整數,分別為w1到wn,代表每乙個位置上的垃圾數目。
對於100%的資料,滿足n<=1000, 2<=m<=10,1<=q<=m, wi<=100
輸出對於每組測試資料,輸出乙個整數ans,表示在不發生口角的情況下,乘務員最多可以清掃的垃圾數目。
樣例輸入
5 2 1樣例輸出36 9 80 69 85
201狀壓dp學習中,發現不好懂。找了篇結題報告,把其中dp陣列的計算輸出了。
5 2 1
36 9 80 69 85
如果dp[0][0] != -1
計算dp[1][0] dp[1][1]
如果dp[0][1] != -1
計算dp[1][2] dp[1][3]
如果dp[0][2] != -1
計算dp[1][0] dp[1][1]
如果dp[0][3] != -1
計算dp[1][2] dp[1][3]
如果dp[1][0] != -1
計算dp[2][0] dp[2][1]
如果dp[1][1] != -1
計算dp[2][2] dp[2][3]
如果dp[1][2] != -1
計算dp[2][0] dp[2][1]
如果dp[2][0] != -1
計算dp[3][0] dp[3][1]
如果dp[2][1] != -1
計算dp[3][2] dp[3][3]
如果dp[2][2] != -1
計算dp[3][0] dp[3][1]
如果dp[3][0] != -1
計算dp[4][0] dp[4][1]
如果dp[3][1] != -1
計算dp[4][2] dp[4][3]
如果dp[3][2] != -1
計算dp[4][0] dp[4][1]
如果dp[4][0] != -1
計算dp[5][0] dp[5][1]
如果dp[4][1] != -1
計算dp[5][2] dp[5][3]
如果dp[4][2] != -1
計算dp[5][0] dp[5][1]
dp陣列:
0 0 0 0
0 36 0 -1
0 9 36 -1
36 116 9 -1
36 105 116 -1
116 201 105 -1
最後結果=201
#include #include #include using namespace std;const int max_n = 1001;
const int max_m = 10;//最多連續10個位置
int n, m, q;//不能超過q
int w[max_n];//儲存每個位置的垃圾
int dp[max_n][1<0)
ok[i]=(cnt<=q);}/*
這段預處理的作用:0到(2^m-1)的所有數可以轉換成二進位制
轉換成的二進位制表示中1的個數時候大於q,如果大於q,則說明
當前的這種狀態是不可取的,可以忽略
*/}void solve()
//讀入資料 每個位置的垃圾
solve();
}return 0;
}
hdu1044 bfs dfs bfs 狀態壓縮
1.狀態壓縮記錄狀態,用十位的二進位制數表示每個寶石選還是不選,共有2 10 1024個狀態,開個陣列vis maxn maxn 1024 判斷在每一點是否達到該狀態,bfs搜尋最短路徑,w h 1024個狀態都要搜到,複雜度較高 include include include using name...
hiho 1044 狀態壓縮 一
時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 描述小hi和小ho在兌換到了喜歡的獎品之後,便繼續起了他們的美國之行,思來想去,他們決定乘坐火車前往下一座城市 那座城市即將舉行美食節!但是不幸的是,小hi和小ho並沒有能夠買到很好的火車票 他們只能夠乘坐最為破舊的火車進行他...
狀態壓縮 二 Hiho9 Hihocoder
歷經千辛萬苦,小hi和小ho終於到達了舉辦美食節的城市!雖然人山人海,但小hi和小ho仍然抑制不住興奮之情,他們放下行李便投入到了美食節的活動當中。美食節的各個攤位上各自有著非常多的有意思的小遊戲,其中乙個便是這樣子的 小hi和小ho領到了乙個大小為n m的長方形盤子,他們可以用這個盒子來裝一些大小...