jzoj100044
完全背包問題
我們可以將數組內每個元素看成一個物品,這樣問題就轉化成:
現有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的更多相关文章
随机推荐
- SqlServer中批量update
现在我有两张表分别是S_PERSON,S_USER S_PERSON S_USER 我现在想把S_USER表中的ACCOUNT批量修改成S_PERSON的ACCOUNT 我们可以发现S_USER表中有 ...
- vue2.0学习小列子
参考地址:https://segmentfault.com/a/1190000006165434 例1: <template> <div id="app"> ...
- CentOS日志列表
anaconda/* 包含至少5个日志文件:anaccmda.log用于保存一般安装消息:anaconda.packaging.log用于保存包安装消息:anaconda.programJog用于调用 ...
- Linux ldconfig命令
一.简介 ldconfig是一个动态链接库管理命令,为了让动态链接库为系统所共享,还需运行动态链接库的管理命令--ldconfig. ldconfig 命令的用途,主要是在默认搜寻目录(/lib和/u ...
- c++之boost share_ptr
转载:https://www.cnblogs.com/welkinwalker/archive/2011/10/20/2218804.html
- [Selenium] CSS3 选择器
在 CSS 中,选择器是一种模式,用于选择需要添加样式的元素. "CSS" 列指示该属性是在哪个 CSS 版本中定义的.(CSS1.CSS2 还是 CSS3.) 选择器 例子 例子 ...
- httpclient之基本类
HttpHost类 主机类 主要属性有域名和端口. HttpRoute类 路由类 主要属性有targetHost(目标主要).proxyChain[]代理链 RouteTracker类 和H ...
- 7.25 js 自定义方法 a.b
调用: $(function(){ Starinput.initiate({name:'qr1_z.startlevel',tar: $("#sitelogo1"), stars: ...
- how to enable the Accessibility in the app
第一部分 先要装一个accchecker,全称是 UI Accessibility Checker .下载地址: http://acccheck.codeplex.com/ 装了之后 用这个工具可以 ...
- 43 We were Born to Nap 我们天生需要午睡
We were Born to Nap 我们天生需要午睡 ①American society is not nap-friendly.In fact, says David Dinged, a sle ...