題目意思:ignatius同學,快到期末了結果還有好多課程沒有完成,每門課作業都有對應的截至日期,和完成它所需的時間,超過截至日期後,沒多一天扣1分,現在文他該如何安排寫作業的順序使得被扣的分最少?
輸入要求:t組資料,n門課,每門課的截至日期和完成所需的時間
輸出要求:被扣的分,和寫作業的順序。(如果有不同順序扣分相同的出現,輸出字典序)
#include
#include
#include
#include
using
namespace
std;
const
int inf=0x3f3f3f3f;//四個3f
struct node
homework[20];
struct kode
dp[1
<<15];
int main()
end=1
//後面需要利用前面求出來的temp1+dp[past].score
if(temp1+dp[past].score//如果先做這門課,比之前的情況更少扣分,那麼記錄下來}}
}stack
s;//構造乙個棧
int temp2=end-1;
cout
<< dp[temp2].score << endl;
while(temp2)
while(!s.empty())
}return
0;}
hdu 1074 狀態壓縮dp
題目描述 有 n 門課程的作業,每門都有完成期限d,與完成所需時間c,若超過期限,1天扣1分。問完成這n門作業至少要扣多少分,並輸出扣分最少的做作業順序。思路 dp i 記錄完成狀態為i的情況下的資訊。完成所需時間,上乙個狀態,最小扣分 狀態方程 dp i min dp j cost j,i 從j狀...
HDU 1074 狀態壓縮dp
起初想到貪心沒思路 看了題解 狀態壓縮dp 最多15個狀態 1,1 include stdio.h include stdlib.h include string.h include algorithm include include define n 1 15 5 define inf 1 30 ...
hdu1074狀態壓縮
很明顯的狀態壓縮題目。當然了如果他的意識只有是求最小值沒有要求輸出那個輸出的順序,那麼直接用揹包,甚至是貪心都是可以做出來的,但是要求順序這個揹包的話沒有辦法吧資料記錄下來。所以用二進位制壓縮。所謂的二進位制壓縮就是用二進位制來表示事情的完成程度和狀況,比如1,就是0000001表示第乙個作業做了,...