完全背包問題

我們可以將數組內每個元素看成一個物品,這樣問題就轉化成:

現有n個物品,每個物品可以取a[i]~b[i]個,價值為d[i],費用為c[i],問怎麼樣取讓費用為0且價值最大

我們可以先每種物品取a[i]個,這樣每個物品變成了可取0~b[i]-a[i]個

記之前c總和為va,則現在我們要取-va才能使總和為0

多重背包即可,要加二進制優化

#include<bits/stdc++.h>
using namespace std;
#define N 2000010
int a[N],b[N],c[N],d[N],n,ans,p[N],va,ct,f[N],v[N];
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%d%d%d%d",&a[i],&b[i],&c[i],&d[i]);
		ans+=a[i]*d[i];
		va+=a[i]*c[i];
		int rrr=b[i]-a[i];
		for(int j=1;j<=rrr;j*=2){
			rrr-=j;
			p[++ct]=c[i]*j;
			v[ct]=d[i]*j;
		}
		if(rrr)p[++ct]=(rrr)*c[i];
		if(rrr)v[ct]=(rrr)*d[i];
	}
	va=-va;
	memset(f,-63,sizeof(f));
	f[0]=0;
	for(int i=1;i<=ct;i++)
		for(int j=va;j>=p[i];j--)
			f[j]=max(f[j],f[j-p[i]]+v[i]);
	printf("%d",ans+f[va]);
}

jzoj100044的更多相关文章

随机推荐

  1. 使用第三方容器服务,自动化部署.Net Core

    1.为什么用第三方,而不自建,有哪些第三方,最后实现的效果 a.尝试过自建,并成功了,但是很麻烦,要敲一堆命令,无法达到全自动化部署的要求. b.自建,就算用第三方的镜像包,感觉下载还是不快,不知道为 ...

  2. Golang之(if)流程控制

    (if)我能坚持做好一只地鼠,慢慢的刨坑,讲洞挖的深一点…… package main import ( "fmt" ) func testIf1() { num := //var ...

  3. 2018年UI设计趋势概览

    ​互联网产品的用户界面设计趋势是根据用户的不同需求而不断变化的.在仔细分析了过去几年用户界面设计的趋势和创新之后,我们可以发现其背后的一些规律,2018年UI界面设计的趋势如下. 渐变色 在过去的几年 ...

  4. js点击添加

    1.点击变色 <div id="dd" style="width:100px;height: 100px;background-color: #ccc"& ...

  5. vc到vs2015消息函数

    afx_msg LRESULT OnMyIconNotify(WPARAM wParam,LPARAM lParam); vc6 可以是void  vs2015不可以 ON_MESSAGE(MYWM_ ...

  6. Netty 系列目录

    Netty 系列目录 二 Netty 源码分析(4.1.20) 1.1 Netty 源码(一)Netty 组件简介 2.1 Netty 源码(一)服务端启动 2.2 Netty 源码(二)客户端启动 ...

  7. 网站SEO优化的方法

    网站SEO优化的方法: 1.url静态化和规范化:url中都去掉了index.php这样的后缀网址形式,目的就是让网站的层级更浅,获得的权重更高 代码中可以使用urlrewrite重写. 2.域名30 ...

  8. java,arduino,C#之间的一些编码转换

    1.C#-> Encoding.UTF8.GetBytes( "abc中") ->[97,98,99,228,184,173] java->byte[] bs= ...

  9. BZOJ 1011 [HNOI2008]遥远的行星 (误差分析)

    1011: [HNOI2008]遥远的行星 Time Limit: 10 Sec  Memory Limit: 162 MBSec  Special JudgeSubmit: 4974  Solved ...

  10. (最小生成树 Prim) Highways --POJ --1751

    链接: http://poj.org/problem?id=1751 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 1150 ...