題意:題意:n首歌,每首歌有其長度,還剩t秒,不包括678秒的《勁歌金曲》
輸出唱的總曲目和時間總長度
對於這題而言需要注意以下幾點:一是要注意題目的最優解必定是在t時間的最後一秒再唱勁霸金曲(即+678),其二如果不像博主上面說的一樣使用結構體,那麼是需要令定義乙個陣列來標記唱歌所花的時間的,因為在dp的過程中是只儲存最大歌唱數目,並沒有記錄時間。
ac**(注釋掉的語句是另一種寫法)
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define inf 0x3f3f3f3f
#define eps 1e-8
#define pi 3.1415
typedef
long
long ll;
using
namespace
std;
struct node
} dp[9005];//採取逆序滾動陣列,所以只有一維
int n,t,p,tt[55];
node max(node a,node b)//自定義max函式
int main()
t=min(t-1,ans);//對dp的時間t進行確定
for(int i=1; i<=n; i++)
dp[j]=max(dp[j],tmp);}}
printf("case %d: %d %d\n",k,dp[t].num+1,dp[t].time+678);//輸出結果
}return
0;}
暑假練習 uva12563(01揹包問題)
解析 這題我花了十幾分鐘就敲出來了,但是沒通過,於是改了倆個多小時才發現少打了max.這題是典型的01揹包問題,其中時間可以看作揹包容量,每首歌就可以看作體積了,那麼重量就是1。本題要求唱最多的歌的同時要盡可能唱的時間久一點。那d i,j 表示在前i首歌中,剩餘時間為t時的最多唱歌數。但是要注意的是...
揹包變形 思路
居民集會 藍橋村的居民都生活在一條公路的邊上,公路的長度為l,每戶家庭的位置都用這戶家庭到公路的起點的距離來計算,第i戶家庭距起點的距離為di。每年,藍橋村都要舉行一次集會。今年,由於村里的人口太多,村委會決定要在4個地方舉行集會,其中3個位於公路中間,1個位最公路的終點。已知每戶家庭都會向著遠離公...
01揹包變形
傳送門 現有n個物品,序號分別為1,2,n。對於每個i 1 i n 物品i有乙個體積wi和乙個價值vi。小明想在這n個物品中選取一些放到揹包裡帶回家。已知揹包的容積為w,這意味著所帶物品的總體積不能超過w。求出小明可以帶回家的物品總價值可能的最大值。constraints input 標準輸入格式如...