hdu 2639 第k小的01揹包

2022-04-30 13:09:13 字數 627 閱讀 3635

題意:第k小的01揹包,重複的選項算乙個

我們年紀一共10個班,如果我想知道年紀第一,我需要知道每個班級的第一名,一比較,那麼我就知道年紀第一是誰了

如果我要知道年紀前十名,那麼,我只要知道每個班的前10名,那麼我比較之後就知道了年級的前十名

dp[i][j]表示體積為i時,價值為第j大的價值,每次選擇物品的時候,計算出所有的體積,把前k名按照順序插入到dp[i]中,這樣,最後得到答案dp[n][v]

#includeusing

namespace

std;

const

int maxn=1e3+5

;int dp[maxn][35],v[105],w[105],a[35],b[35

];int

main()

a[kk]=b[kk]=-1

; a=b=c=1

;

while(c<=k&&(a[a]!=-1||b[b]!=-1

)) }

printf(

"%d\n

",dp[v][k]);

}return0;

}

view code

hdu 2639 第k大01揹包

求每個狀態裡的k優解,然後合併 hdu 2639 求01揹包的第k大解。合併兩個有序序列 include include include include using namespace std const int maxn 110 int dp 1010 50 dp i j 表示容量為i,第j大的值...

dp之01揹包hdu2639(第k優解)

題意 給出一行價值,一行體積,讓你在v體積的範圍內找出第k大的值.注意,不要 和它的第一題混起來,它第一行是價值,再是體積 思路 首先dp i j 代表的是在體積為i的時候第j優解為dp i j 那麼,我們就可以這樣思考,i對應體積,那麼如果只是一維的dp i 代表的應該是體積為i時的最大值,那麼同...

dp之01揹包hdu2639(第k優解)

題意 給出一行價值,一行體積,讓你在v體積的範圍內找出第k大的值.注意,不要 和它的第一題混起來,它第一行是價值,再是體積 思路 首先dp i j 代表的是在體積為i的時候第j優解為dp i j 那麼,我們就可以這樣思考,i對應體積,那麼如果只是一維的dp i 代表的應該是體積為i時的最大值,那麼同...