bzoj1649Cow Roller Coaster

Posted zcysky

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bzoj1649Cow Roller Coaster相关的知识,希望对你有一定的参考价值。

傻逼dp题。

dp[i][j]表示用了i长度已花费成本j所能得到的价值。

然后枚举一下铁轨随便做了。

不行就sort一下。

 

#include<bits/stdc++.h>
#define inf 1000000007
typedef long long ll;
using namespace std;
struct Node{int s,c,w,f;}a[100010];
ll f[1005][1005];
bool cmp(Node a,Node b){
    if(a.s==b.s)return a.w<b.w;
    return a.s<b.s;
}
inline int read(){
    int f=1,x=0;char ch;
    do{ch=getchar();if(ch==-)f=-1;}while(ch<0||ch>9);
    do{x=x*10+ch-0;ch=getchar();}while(ch>=0&&ch<=9);
    return f*x;
}
int l,n,maxv;
int main(){
    l=read();n=read();maxv=read();
    for(int i=1;i<=n;i++){
        a[i].s=read();a[i].w=read();a[i].f=read();a[i].c=read();
    }
    sort(a+1,a+n+1,cmp);memset(f,-1,sizeof(f));f[0][0]=0;
    for(int i=1;i<=n;i++){
        int len=a[i].s+a[i].w;
        for(int j=maxv;j>=a[i].c;j--)if(f[a[i].s][j-a[i].c]>=0)
        f[len][j]=max(f[len][j],f[a[i].s][j-a[i].c]+a[i].f);
    }
    ll ans=-inf;
    for(int i=0;i<=maxv;i++)ans=max(ans,f[l][i]);
    cout<<ans;
}

 

以上是关于bzoj1649Cow Roller Coaster的主要内容,如果未能解决你的问题,请参考以下文章

bzoj1649[Usaco2006 Dec]Cow Roller Coaster*

bzoj1644 / P1649 [USACO07OCT]障碍路线Obstacle Course

题解P2854 [USACO06DEC]牛的过山车Cow Roller Coaster

POJ - 3257 Cow Roller Coaster (背包)

题解[Usaco2006 Dec]Cow Roller Coaster

[luoguP2854] [USACO06DEC]牛的过山车Cow Roller Coaster(DP + sort)