Mochila del grupo Tongtian P1757 (Luogu)

Portal de título original

Inserte la descripción de la imagen aquí

Idea: El problema de agrupar la mochila es un poco más complicado que 01 mochila y mochila completa, pero las rutinas son similares, pero el problema de la agrupación de la mochila comienza enumerando cada grupo, luego enumerando la capacidad restante y luego enumerando el número de serie. de los elementos en cada grupo, y luego aplicar la ecuación de transición de estado cuando se cumplan las condiciones, y finalmente la salida.

Referencia de código

#include <bits/stdc++.h>
using namespace std;
int f[1001],w[1001],v[1001],c[101][101],cc[101],z,m,n;
/*
** w:某种物品的重量,v:某种物品的价值,c[][]:第几组第几件物品的序号
** cc[]:第几组的物品件数,z:组数,m:总重量,n:全部物品件数
*/
int main()
{
    
    
    cin>>m>>n;
    for(int i=1;i<=n;i++)
    {
    
    
    	int C;
    	cin>>w[i]>>v[i]>>C;
    	z=max(z,C);
    	cc[C]++;
    	c[C][cc[C]]=i;
	}
    for(int i=1;i<=z;i++)
    	for(int j=m;j>=0;j--)
    		for(int k=1;k<=cc[i];k++)
    		if(j>=w[c[i][k]])
    		f[j]=max(f[j],f[j-w[c[i][k]]]+v[c[i][k]]);
    cout<<f[m];
}

Supongo que te gusta

Origin blog.csdn.net/Bertil/article/details/106764548
Recomendado
Clasificación