红字差评系列3.abcd



【题目分析】
首先,这个e[i]是在a[i]~b[i]的,而且要{c[i]*e[i]}为0,{d[i]*e[i]}最大。
我们把a[i]~b[i]这个区间向左平移a[i]个单位,于是这个区间就变成了0~b[i]-a[i],假设b1[i]=b[i]-a[i],此时的e1[i]=e[i]-a[i](也就是比原来的数字小了a[i])(这里为了区分,都把平移后的数组用1标记一下QAQ)。
这样问题就变成了一个多重背包的问题。有n中物品,每一种物品有e1[i](0~b1[i])个,c[i]为该种物品的体积,d[i]为该种物品的价值,背包的总容量为-{c[i]*a[i]}(因为∑c[i]*e[i]=0,e1[i]=e[i]-a[i],所以有∑c[i]*(e1[i]+a[i])=0——> ∑c[i]*e1[i]+∑c[i]*a[i]=0——>∑c[i]*e1[i]=-∑c[i]*a[i])。要求最大的背包价值∑d[i]*e[i]也就是∑d[i]*e1[i]+∑d[i]+a[i]。
然后这个∑c[i]*a[i]是可以在读入时候处理出来的,前面-∑c[i]*a[i]也一样。
就...没了。
歇歇峰峰的。
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
const int maxn=;
int n,m,a[maxn],b[maxn],c[maxn],d[maxn];
int tiji[maxn],jiazhi[maxn],ans,num;
int f[maxn];
int read()
{
int x=,f=;
char ch=getchar();
while(ch<''||ch>'')if(ch=='-')f=-,ch=getchar();
while(ch<=''&&ch>='') x=x*+ch-'',ch=getchar();
return x*f;
}
void Pre(int tj,int jz,int gs)
{
for(int i=;i<=gs;i*=)
gs-=i,tiji[++num]=tj*i,jiazhi[num]=jz*i;
if(gs) tiji[++num]=gs*tj,jiazhi[num]=jz*gs;
}
int main()
{
freopen("abcd.in","r",stdin);
freopen("abcd.out","w",stdout);
n=read();
for(int i=;i<=n;i++)
{
a[i]=read();b[i]=read();
c[i]=read();d[i]=read();
b[i]-=a[i];
m-=c[i]*a[i];
ans+=a[i]*d[i];
}
for(int i=;i<=n;i++)
Pre(c[i],d[i],b[i]);
memset(f,-0x3f,sizeof f);
f[]=;
for(int i=;i<=num;i++)
for(int j=m;j>=tiji[i];j--)
f[j]=max(f[j],f[j-tiji[i]]+jiazhi[i]);
cout<<ans+f[m];
return ;
} /*
10
1 10 1 0
-10 10 2 2
-10 10 2 2
-10 10 2 2
1 10 1 0
-10 10 2 2
-10 10 2 2
1 10 1 0
-10 10 2 2
1 10 1 0
*/
红字差评系列3.abcd的更多相关文章
- 红字差评系列2.dwarf
[题目分析] 首先按照题目给出的样例想到只要每个物品的价格都用能够合成他的两个物品来更新,一边读入一边更新就好了,后来又发现如果出现这样的情况:1 2 3在2 5 6 的前面,那我们就需要先更新2在更 ...
- 红字差评系列1.第K小数
[题目分析] 二分答案?smg,我太弱了 //不开longlong wa到挺了 #include <cstdio> #include <cstring> #include &l ...
- 餐厅随评系列之四:Umu日本料理(米其林二星)
文章目录 在过去的几个月,工作和生活都极其忙碌,因此博客短暂停更了一阵子.慢慢积累下了很多素材,从近期开始恢复博客更新,不过很多内容估计得靠回忆了. 索性采取"倒叙"的方法,先从最 ...
- 亚马逊(Review、Feedback)差评怎么处理?
移除亚马逊Review差评,我看也就这三招靠谱点! 亚马逊特别重视review,差评会直接影响到listing的浏览量和销量,甚至还可以摧毁一个账号.遇到一个差的review怎么办?网上看到很多讲移除 ...
- PowerShell 解决红字一闪而过问题
起因 起初只想在 win7上实现 pause 效果而已 cmd /c pause | out-null 结果只能看到红字一闪而过 打开 PowerShell ISE 进行调试 这次清楚的看到红字提示 ...
- ORACLE分区表梳理系列(二)- 分区表日常维护及注意事项(红字需要留意)
版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...
- 微软本月将推Win10 望打破Win8所带来差评影响
系统妈 据香港“文汇报”7月15日报道,美国电脑巨擘微软13日宣布,新视窗系统10(Windows 10)将于7月29日推出.微软高层迈赫迪在网志表示,届时全球将有13个城市举办特别活动,表扬参与Wi ...
- 【转】C数据存储(包括const存储在哪,C++不同部分我在文中用红字已指出)
非原创(文中红字为自己见解,如有不对,请大神指点) 程序由指令和数据组成,C语言程序亦是如此.开发者在编写程序的时候往往需要根据不同数据的特点以及程序需求来选择不同的数据存储方式,那么在C语言中数据的 ...
- 解决Cydia出现红字提示“Sub-process/usr/bin/dpkg returned an error code(2)
进入此路径/var/lib/dpkg/,修改红框中的文件名,依次修改为:"available" 重新命名为 "available-bak":"stat ...
随机推荐
- Shell编程中括号判断中赋值语句和判断语句
#!/bin/bash declare var="xxx" # without space and use one = #1.judge whether the assignmen ...
- BizTalk开发系列(二十三) BizTalk性能指标参考
BizTalk项目目前比较少,使用的客户也不多.大多只知道BizTalk是一个不错的产品,是Microsoft SOA平台的核心产品,不过还没有将其应用到生产环境.还有一些客户对BizTalk的性能不 ...
- 西部数据出现“WD SES Device USB Device”怎么办,而且说明书全是英文。
您好.wd ses device driver这个驱动程序可以在baidu中输入关键词找到,什么驱动之家.驱动人生之类的专业驱动网站也都是有的. western digital的移动硬盘驱动程序安装步 ...
- Otsu algorithm
一.介绍 OTSU算法也称最大类间差法,有时也称之为大津算法,被认为是图像分割中阈值选取的最佳算法,计算简单,不受图像亮度和对比度的影响,因此在数字图像处理上得到了广泛的应用.它是按图像的灰度特性,将 ...
- NFS服务器搭建
1. 安装nfs-kernel-server,然后编辑/etc/exports. /sambadata/nfsserver 10.0.0.0/255.255.255.0(fsid=0,all_s ...
- cordova-sqlite-plugin常用数据库操作
ionic项目需要做本地缓存,研究了一番,总结出了常用的数据库操作: 1.新建数据库,用angularJS+ionic: //声明一个数据库对象 var db = null; //事件devicere ...
- cacti监控apache和nginx的配置
一.监控apache1.下载http://forums.cacti.net/about25227.html&highlight=apachestats2.其中的ss_apache_stats. ...
- php5-fpm.sock failed (13: Permission denied) error
In order to fix the php5-fpm.sock failed error follow these instructions 1) Make sure your virtual h ...
- Maven-005-部署构件至 nexus 私服
nexus 私服仓库中宿主仓库主要用于储存装置内部的或一些无法从公共仓库获取的第三方构件,供项目组的人员使用.日常开发中,可将各版本构件直接部署到 Nexus 中对应策略的宿主仓库中.上篇文章中讲述了 ...
- 使用Mod_JK链接Apache和Tomcat
There are many potential problems associated with the default configuration of mod_jk. Let's say it ...