BZOJ 1625: [Usaco2007 Dec]宝石手镯

来源:互联网 发布:声音裁剪软件 编辑:程序博客网 时间:2024/04/27 15:41

水一道01背包

#include<cstdio>#include<cstring>#include<algorithm>#define g getchar()#define ll long long#define inf 0x3f3f3f3f#define rep(i,n) for(int i=1;i<=n;++i)using namespace std;inline ll read(){    ll x=0,f=1;char ch=g;    for(;ch<'0'||ch>'9';ch=g)if(ch=='-')f=-1;    for(;ch>='0'&&ch<='9';ch=g)x=x*10+ch-'0';    return x*f;}inline void out(ll x){    int a[25],wei=0;    if(x<0)putchar('-'),x=-x;    for(;x;x/=10)a[++wei]=x%10;    if(wei==0){puts("0");return;}    for(int j=wei;j>=1;--j)putchar('0'+a[j]);    putchar('\n');}int n,m,w[4005],d[4005],now,pre,a[2][15000],ans;int main(){//  freopen("","r",stdin);//  freopen("","w",stdout);    n=read();m=read();    rep(i,n)w[i]=read(),d[i]=read();    rep(i,n){        now=i&1;pre=now^1;//      memset(a[now],0,sizeof(a[now]));        rep(j,m){            if(j>=w[i])a[now][j]=max(a[pre][j-w[i]]+d[i],a[pre][j]);            else a[now][j]=a[pre][j];        }    }    rep(i,m)ans=max(ans,a[now][i]);    out(ans);    return 0;}
0 0
原创粉丝点击