1 条题解

  • 0
    @ 2024-12-24 9:54:34

    C++ :

    #include<bits/stdc++.h>
    #define C c=getchar()
    using namespace std;
    int i,j,k,n,m,tot,ans,t;
    int f[1005],h[105],v[105];
    int read(){
        char c;int x;while(C,c<'0'||c>'9');x=c-'0';
        while(C,c>='0'&&c<='9') x=x*10+c-'0';return x;
    }
    int maxn(int a,int b){return a>b?a:b;}
    int minn(int a,int b){return a<b?a:b;}
    int main()
    {
        //freopen("cheese.in","r",stdin);freopen("cheese.out","w",stdout);
        n=read();t=read();k=read();
        for(int i=1;i<=n;i++){
            v[i]=read(); h[i]=read();
        }
        for(int i=1;i<=n;i++)
         if(h[i]<k) for(int j=h[i];j<=t;j++) f[j]=maxn(f[j],f[j-h[i]]+v[i]);
        for(int i=0;i<=t;i++) ans=maxn(ans,f[i]);
        for(int i=1;i<=n;i++)
         for(int j=h[i]*4/5;j<=t;j++) 
            f[j]=maxn(f[j],f[j-h[i]*4/5]+v[i]);
        for(int i=1;i<=n;i++)
         if(h[i]>=k) for(int j=h[i];j<=t;j++) ans=maxn(ans,f[j-h[i]]+v[i]);
        printf("%d",ans);
        return 0;
    }
    
    • 1

    信息

    ID
    1239
    时间
    1000ms
    内存
    64MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者