[luogu] P1776 宝物筛选 多重背包二进制优化

前言

传送门 :

思路

多重背包二进制裸题

没记错这个使用了倍增的思想

将我们选的数 表示成二进制即可,大大的提高了时间效率

CODE

const int N  = 4e4+10;
ll f[N*20];

int n,m;

void solve()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		int v,w,s;cin>>w>>v>>s;
		
		for(int k=1;k<=s;k*=2)
		{
			for(int j =m;j>=k*v;j -- )
			f[j] = max(f[j],f[j-k*v]+k*w);
			s-=k;
		}
		
		if(s)
		{
			for(int j = m;j>=s*v;j--)
			{
				f[j] = max(f[j],f[j-s*v]+s*w);
			}
		}
	}
	cout<<f[m]<<endl;
	
}
上一篇:mysql – SQLSTATE [22007]:无效的日期时间格式:1292日期时间值不正确:’2008-03-30 02:56:12′


下一篇:手动kubeadm部署k8s单master节点