| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
DP#include<iostream>
#include<algorithm>
using namespace std;
const int MAX=10005;
int dp[1001][1001];//dp[i][j]表示在i点花费j美金的最大快乐值
struct node
{
int x,w,f,c;
}a[MAX];
bool operator <(const node &a,const node &b)
{
return a.x<b.x;//将所有材料按照起点升序排序
}
int main()
{
//freopen("in.txt","r",stdin);
int L,N,B;
int i,j;
scanf("%d%d%d",&L,&N,&B);
for(i=0;i<N;i++)
{
scanf("%d%d%d%d",&a[i].x,&a[i].w,&a[i].f,&a[i].c);
}
sort(a,a+N);
memset(dp,-1,sizeof(dp));
for(i=0;i<=B;i++)
dp[0][i]=0;//从0开始
for(i=0;i<N;i++)
{
for(j=0;j<B;j++)
{
if(dp[a[i].x][j]==-1||a[i].c+j>B||a[i].x+a[i].w>L) continue;//dp[a[i].x][j]==-1表示无法到达a[i].x
if(dp[a[i].x+a[i].w][j+a[i].c]<dp[a[i].x][j]+a[i].f)
dp[a[i].x+a[i].w][j+a[i].c]=dp[a[i].x][j]+a[i].f;
}
}
printf("%d\n",dp[L][B]);
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator