subtask(?)#1全WA玄关求调

P1064 [NOIP2006 提高组] 金明的预算方案

OIer_wyh @ 2024-10-07 20:48:12

#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e7+7;
struct node{
    int tot,w[5],v[5];
}a[200];
int dp[MAXN];
int main() {
    int n,m;
    cin>>m>>n;
    for(int i=1;i<=n;i++) {
        int x,y,z;
        cin>>x>>y>>z;
        if(z==0) {
            a[i].tot=1;
            a[i].w[1]=x;
            a[i].v[1]=x*y;
        }
        else {
            if(a[z].tot==1) {
                a[z].tot=2;
                a[z].w[2]=a[z].w[1]+x;
                a[z].v[2]=a[z].v[1]+x*y;
            }
            else {
                a[z].w[3]=a[z].w[1]+x;
                a[z].v[3]=a[z].v[1]+x*y;
                a[z].w[4]=a[z].w[2]+x;
                a[z].v[4]=a[z].v[2]+x*y;
                a[z].tot=4;
            }
        }
    }
    for(int i=1;i<=n;i++) {
        for(int j=m;j>=0;j--) {
            for(int k=1;k<=a[i].tot;k++) {
                if(j>=a[i].w[k]) {
                    dp[j]=max(dp[j],dp[j-a[i].w[k]]+a[i].v[k]);
                }
            }
        }
    }
    cout<<dp[m];
    return 0;
}

|