60分救命

P1478 陶陶摘苹果(升级版)

冶光_sama @ 2021-09-15 21:32:56

用动态规划做的,3,5WA

不知道咋调了

求助

#include<bits/stdc++.h>
using namespace std;
int n,s;
int a,b;
int x[5005],y[5005];
int f[5005][1005];
int max(int q,int p)
{
    if(q>p)return q;
    else return p;
}
int main()
{
    cin>>n>>s;
    cin>>a>>b;
    for(int i=1;i<=n;i++)
    cin>>x[i]>>y[i];
    int app=0;//能摘到的苹果数
    bool ap[5005]={0};//记录能摘到的苹果
    for(int i=1;i<=n;i++)
    {
        if(x[i]<=a+b)
        {
            app++;
            ap[i]=1;
        }
    }
    for(int i=1;i<=n;i++)
        for(int v=s;v>0;v--)
        {
            if(ap[i]==0)break;
            if(y[i]<=v)f[i][v]=max(f[i-1][v],f[i-1][v-y[i]]+1);
            else f[i][v]=f[i-1][v];
        }
    cout<<f[n][s];
    return 0;
}

by ajahjahah @ 2021-09-15 21:42:04

@冶光_sama 这题应该是用的贪心吧


by ajahjahah @ 2021-09-15 21:43:40

每个苹果不会影响别的苹果,所以应该是贪心


by 冶光_sama @ 2021-09-15 21:49:20

@lao_ba 我后来也想起来最优解应该是贪心,但是都写了大半了,就当练下背包了


by ajahjahah @ 2021-09-15 21:52:16

@冶光_sama az

不过背包应该解不了

可以试试搜索


|