分组背包求救
  • 板块灌水区
  • 楼主lccve
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/1/15 12:56
  • 上次更新2023/10/24 04:09:27
查看原帖
分组背包求救
525302
lccve楼主2023/1/15 12:56

rt:

我的代码:

#include<bits/stdc++.h>
using namespace std;
int v,n,t;
int a[11][31];
int w[31];
int c[31];
int f[201];
int main(){
    cin>>v>>n>>t;
    for(int i=1;i<=n;i++)
    {
    	int p;
    	cin>>w[i]>>c[i]>>p;
    	a[p][++a[p][0]]=i;
	}
	for(int k=1;k<=t;k++)
		for(int j=v;j>=0;j--)
			for(int i=1;i<=a[i][0];i++)
			{
				if(j>=w[a[k][i]])
				{
					int tmp=a[k][i];
					if(f[j]<f[j-w[tmp]]+c[tmp])
						f[j]=f[j-w[tmp]]+c[tmp];
				}
			} 
	cout<<f[v];
}

wa测试点:

178 26 4
43 1527 3
130 1077 1
74 527 2
155 74 3
157 186 3
144 1796 2
159 727 3
129 929 3
47 338 1
17 1302 1
133 1725 2
124 1998 1
125 1332 2
162 207 3
21 583 3
137 613 1
163 126 2
98 1858 2
140 553 1
152 395 3
34 580 1
40 555 1
66 333 3
38 1594 3
173 1840 1
99 1186 1

我的输出:3356

正确输出:4754

2023/1/15 12:56
加载中...