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的更多相关文章
随机推荐
- VBA json parser[z]
http://www.ediy.co.nz/vbjson-json-parser-library-in-vb6-xidc55680.html VB-JSON: A Visual Basic 6 (VB ...
- sqlserver 日期格式化
Sql Server 中一个非常强大的日期格式化函数Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AMSelect CONVE ...
- Loadrunner12.5-同一个网址通过vugen不能打开,但是直接在ie11中就可以打开
一:录制选项修改成“WinINet级别数据”,重新录制就可以成功打开网页了. 注:运行时设置--首选项--高级--“使用WinINet回放而非套接字(仅限Windows)”需要勾选上:否则录制脚本结束 ...
- 2017年值得一看的7个APP设计
新媒体时代蓬勃发展,各类APP如雨后春笋般出现.下载到合适的APP,不仅衣食住行一键搞定,甚至健身.社交.阅读等需求也能足不出户地满足.对于广大“吃瓜群众”来说,选择APP是个人需求以及跟随潮流的选择 ...
- 设计资源:三个精美APP原型例子下载
原型设计是整个产品生产过程中不可或缺的一环,无论你是移动端UI设计师或是网页设计师,原型设计都会让整个设计过程更加轻松.原型是产品概念的具象化,它让每个项目参与者都能查看并提出意见以便在产品发布前日臻 ...
- smrtlink
SMRT Link is the web-based end-to-end workflow manager for the Sequel™ System. It includes software ...
- Fibonacci number
https://github.com/Premiumlab/Python-for-Algorithms--Data-Structures--and-Interviews/blob/master/Moc ...
- python 线程和进程概述
计算机中执行任务的最小单元:线程 IO操作利用CPU GIL,全局解释器锁 IO密集型: 多线程(不用CPU) 计算机密集型(用CPU) 进程和线程的目的:提高执行效率 1.单进程单线程,主进程.主线 ...
- ORACLE实用函数之一 ratio_to_report的简单使用
应用场景: 查询学生成绩级别(ABCDE)个人数和所占百分比(案列简单,勿喷). 表结构: create or replace table stu_grade( id varchar2(36), le ...
- 2018.09.23 孙悟空大战鲤鱼精(单调队列优化dp)
描述 孙悟空大战鲤鱼精,孙悟空在通天河遇到鲤鱼精,他嫉恶如仇,看见妖精就手痒(忘了自己是妖精).但是鲤鱼精知道孙悟空的厉害,在孙悟空来到通天河,鲤鱼精就跑到了河对面.于是孙悟空就去追鲤鱼精. 我们可以 ...