Comet OJ - Contest #11[usiness]

 


考試的時候手摸徹底揹包node

結果被最後一個點搞了c++

由於我靠循環變量<k,應該是<=k,結果由於還有點事走了spa

所有白給XDcode

#include<bits/stdc++.h>
using namespace std;
#define fmax(x) memset(x,0x3f,sizeof(x))
#define fmin(x) memset(x,-0x3f,sizeof(x))
const int inf=0x3f3f3f3f;
#define ll long long
struct node{int a,b;}at[200010];
int num[200010],val[200010],bol[200010],f[101][6015],n,k,m,ans;
int main()
{
    fmin(f);
    cin>>n>>m>>k;
    for(int i=0;i<=k;i++){cin>>val[i];bol[val[i]+i]=val[i];}
    for(int i=1;i<=m;i++)cin>>at[i].a>>at[i].b;
    f[1][0]=0;
    for(int i=2;i<=n;i++)
        for(int j=6010;j>=0;j--)
        {
        for(int tk=0;tk<=k;tk++)if(j-val[tk]==tk)f[i][j]=max(f[i-1][j-val[tk]],f[i][j]);
        f[i][j]=max(f[i][j],f[i-1][j]);
        for(int kk=1;kk<=m;kk++)
        if(j>=at[kk].a)f[i][j-at[kk].a]=max(f[i][j-at[kk].a],f[i][j]+at[kk].b);    
        }
    for(int i=0;i<=6010;i++)ans=max(f[n][i]+i+val[i],ans);
    cout<<ans;
}
相關文章
相關標籤/搜索