BZOJ_3963_[WF2011]MachineWorks_斜率优化+CDQ分治
BZOJ_3963_[WF2011]MachineWorks_斜率优化+CDQ分治
Description
Input
Output
Sample Input
6 12 1 3
1 9 1 2
3 2 1 2
8 20 5 4
4 11 7 4
2 10 9 1
0 0 0
Sample Output
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long ll;
typedef double f2;
#define N 200050
#define eps 1e-6
#define mem(x) memset(x,0,sizeof(x))
ll f[N],D[N],P[N],R[N],G[N],C;
int n,Case,S[N],t[N],tmp[N];
#define Y(j) (f[j]-P[j]-D[j]*G[j]-G[j]+R[j])
#define X(j) (G[j])
#define K(i) (-D[i])
struct A {
ll d,p,r,g;
bool operator < (const A &x) const {
return d<x.d;
}
}a[N];
f2 getK(int p1,int p2) {
if(fabs(X(p2)-X(p1))<eps) return Y(p2)>Y(p1)?1e15:-1e15;
return (1.0*Y(p2)-Y(p1))/(X(p2)-X(p1));
}
void solve(int l,int r) {
if(l==r) return ;
int mid=(l+r)>>1;
solve(l,mid);
int i,j,k;
int top=0;
for(i=l;i<=mid;i++) {
if(f[t[i]]<P[t[i]]) continue;
while(top>1&&getK(S[top-1],S[top])<=getK(S[top-1],t[i])) top--;
S[++top]=t[i];
}
for(j=1,i=mid+1;i<=r;i++) {
while(j<top&&getK(S[j],S[j+1])+eps>=K(t[i])) j++;
f[t[i]]=max(f[t[i]],Y(S[j])-K(t[i])*X(S[j]));
}
solve(mid+1,r);
i=l,j=l,k=mid+1;
while(j<=mid&&k<=r) {
if(X(t[j])<X(t[k])) tmp[i++]=t[j++];
else tmp[i++]=t[k++];
}
while(j<=mid) tmp[i++]=t[j++];
while(k<=r) tmp[i++]=t[k++];
for(i=l;i<=r;i++) t[i]=tmp[i];
}
int work() {
Case++;
ll tmp;
scanf("%d%lld%lld",&n,&C,&tmp); D[n+1]=tmp+1;
if(n==0) return 0;
int i,j;
for(i=1;i<=n;i++) {
scanf("%lld%lld%lld%lld",&a[i].d,&a[i].p,&a[i].r,&a[i].g);
}
/*if(Case!=17) return 1;
printf("%d %lld %lld\n",n,C,tmp);
for(i=1;i<=n;i++) printf("%lld %lld %lld %lld\n",a[i].d,a[i].p,a[i].r,a[i].g);
return 0;*/
sort(a+1,a+n+1);
for(i=1;i<=n;i++) D[i]=a[i].d,P[i]=a[i].p,R[i]=a[i].r,G[i]=a[i].g,t[i]=i;
// for(i=1;i<=n;i++) printf("%lld\n",D[i]);
n++; f[0]=C; t[n]=n;
for(i=1;i<=n;i++) f[i]=-K(i)*X(0)+Y(0);
solve(1,n);
/*for(i=1;i<=n;i++) {
for(j=1;j<i;j++) {
if(f[j]>=P[j])
f[i]=max(f[i],-K(i)*X(j)+Y(j));
}
printf("%lld\n",f[i]);
}*/
printf("Case %d: %lld\n",Case,f[n]);
return 1;
}
int main() {
while(1) {
mem(a); mem(D); mem(P); mem(R); mem(f); mem(G); mem(t); mem(tmp); mem(S);
int tmp=work();
if(!tmp) return 0;
}
}
BZOJ_3963_[WF2011]MachineWorks_斜率优化+CDQ分治的更多相关文章
- 【BZOJ-1492】货币兑换Cash DP + 斜率优化 + CDQ分治
1492: [NOI2007]货币兑换Cash Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 3396 Solved: 1434[Submit][Sta ...
- 洛谷.4655.[CEOI2017]Building Bridges(DP 斜率优化 CDQ分治)
LOJ 洛谷 \(f_i=s_{i-1}+h_i^2+\min\{f_j-s_j+h_j^2-2h_i2h_j\}\),显然可以斜率优化. \(f_i-s_{i-1}-h_i^2+2h_ih_j=f_ ...
- BZOJ3963 WF2011MachineWorks(动态规划+斜率优化+cdq分治)
按卖出时间排序后,设f[i]为买下第i台机器后的当前最大收益,则显然有f[i]=max{f[j]+gj*(di-dj-1)+rj-pi},且若此值<0,应设为-inf以表示无法购买第i台机器. ...
- bzoj1492/luogu4027 货币兑换 (斜率优化+cdq分治)
设f[i]是第i天能获得的最大钱数,那么 f[i]=max{在第j天用f[j]的钱买,然后在第i天卖得到的钱,f[i-1]} 然后解一解方程什么的,设$x[j]=\frac{F[j]}{A[j]*Ra ...
- [Noi2014]购票 BZOJ3672 点分治+斜率优化+CDQ分治
Description 今年夏天,NOI在SZ市迎来了她30周岁的生日.来自全国 n 个城市的OIer们都会从各地出发,到SZ市参加这次盛会.全国的城市构成了一棵以SZ市为根的有根树,每个城市与它的 ...
- [BZOJ1492][NOI2007]货币兑换Cash(斜率优化+CDQ分治)
1492: [NOI2007]货币兑换Cash Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 5838 Solved: 2345[Submit][Sta ...
- 【BZOJ2726】[SDOI2012]任务安排 斜率优化+cdq分治
[BZOJ2726][SDOI2012]任务安排 Description 机器上有N个需要处理的任务,它们构成了一个序列.这些任务被标号为1到N,因此序列的排列为1,2,3...N.这N个任务被分成若 ...
- 【BZOJ1492】[NOI2007]货币兑换Cash 斜率优化+cdq分治
[BZOJ10492][NOI2007]货币兑换Cash Description 小Y最近在一家金券交易所工作.该金券交易所只发行交易两种金券:A纪念券(以下简称A券)和 B纪念券(以下简称B券).每 ...
- BZOJ2726 [SDOI2012]任务安排 【斜率优化 + cdq分治】
题目 机器上有N个需要处理的任务,它们构成了一个序列.这些任务被标号为1到N,因此序列的排列为1,2,3...N.这N个任务被分成若干批,每批包含相邻的若干任务.从时刻0开始,这些任务被分批加工,第i ...
随机推荐
- 让win7任务条上的文件夹打开是c,d,e,f而不是库
如果资源管理器是打开的,则右键点击资源管理器的图标,在跳出的菜单中,右键点击“Windows资源管理器”,选择“属性”. 在“快捷方式’选项卡,“目标”一栏,默认的是 %windir%\explore ...
- SSD TRIM
SSD 在操作方式上与传统磁性驱动器不同,并且它们需要在软件上另行处理以达到功能优化.-- Don Watkins 编译自: https://opensource.com/article/17/1/s ...
- 微信公众账户的开发者模式(一) 部分细节access_token的获取等
十四老久没有写博客了,中间经历了,事业,感情的几分波折.现在终于稍微缓过来一点.又是一次从头开始,走在匆忙的路上. 好了煽情完了,直接上代码了. 基础就不说了我用的是vs2005开发的,部署在iis6 ...
- MMT事务处理来源类型-INV_OBJECT_GENEALOGY.GETSOURCE
INV_OBJECT_GENEALOGY.GETSOURCE (MTL_MATERIAL_TRANSACTIONS.ORGANIZATION_ID, ...
- 一个炫酷的Actionbar效果
今天在网上看到一个炫酷的Actionbar效果,一个老外做的DEMO,目前很多流行的app已经加入了这个效果. 当用户初始进入该界面的时候,为一个透明的 ActiionBar ,这样利用充分的空间显示 ...
- windows redis 服务安装坑
环境 winserver 2012 最新版的redis:3.0.503 redis-server.exe --service-install redis.windows.conf --m ...
- 通过BSSID和无线流量传输后门Payload
本文将探讨无线接入点(AP)和BSSID(MAC地址AP).我们不借助文件系统加密和文件系统中(仅内存中)的硬编码Payload即可获得后门Payload,通过该方法可绕过所有的杀软,可以不使用Pay ...
- 【paddle学习】图像分类
https://zhuanlan.zhihu.com/p/28871960 深度学习模型中的卷积神经网络(Convolution Neural Network, CNN)近年来在图像领域取得了惊人的成 ...
- 哈理工2015 暑假训练赛 zoj 2976 Light Bulbs
MS Memory Limit:65536KB 64bit IO Format:%lld & %llu SubmitStatusid=14946">Practice ...
- 我理解的ios和android
近期着手了几个android和ios的项目,如今说下我的几个对他们的理解 从设计上来讲.我觉得android 它更像是个网页,一个页面跳到另外一个页面,两者之间的关联不是非常大,仅仅能传递一些简单的參 ...