题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3963

CDQ分治加凸包。具体看这篇题解:http://www.acmerblog.com/hdu-3842-machine-works-6844.html

 #include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#define inf 1<<30
#define maxn 100005
#define ll long long
using namespace std;
int n,c,d,cases;
long long f[maxn];
int read(){
int x=,f=; char ch;
for(ch=getchar();ch<''||ch>'';ch=getchar()) if(ch=='-') f=-;
for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-'';
return x*f;
}
struct fuck{int d,p,r,g; void init(){d=read();p=read();r=read();g=read();}}m[maxn];
typedef pair<int,long long> pa;
pa a[maxn],b[maxn];
long long h(int x){return f[x]-(ll)m[x].p+(ll)m[x].r-(ll)m[x].g*(ll)(m[x].d+);}
bool cmp(fuck x,fuck y){return x.d<y.d;}
bool check(pa a,pa b,pa c){
ll xa=b.first-a.first; ll xb=c.first-a.first;
ll ya=b.second-a.second; ll yb=c.second-a.second;
double tmp=(double)xa*yb-(double)ya*xb;
return tmp<;
}
void solve(int l,int r){
if(l==r) return;
int mid=(l+r)>>;
solve(l,mid);
int na=,nc=;
for(int i=l;i<=mid;i++){
if(f[i]>=m[i].p) a[++na]=pa(m[i].g,h(i));
}
sort(a+,a+na+);
for(int i=;i<=na;i++){
while(nc>&&!check(b[nc-],b[nc],a[i])) nc--;
b[++nc]=a[i];
}
int j=;
for(int i=mid+;i<=r;i++){
ll a1,a2,b1,b2,x;
x=m[i].d;
while(j<nc){
a1=b[j].first; a2=b[j+].first;
b1=b[j].second; b2=b[j+].second;
if(a1*x+b1>=a2*x+b2) break;
j++;
}
f[i]=max(f[i],(ll)b[j].first*x+b[j].second);
}
solve(mid+,r);
}
int main(){
for(n=read(),c=read(),d=read();n&&c&&d;n=read(),c=read(),d=read()){
for(int i=;i<=n;i++) m[i].init();
sort(m+,m+n+,cmp);
m[++n].d=d+; m[n].p=m[n].r=m[n].g=;
for(int i=;i<=n;i++) f[i]=c;
solve(,n);
printf("Case %d: %lld\n",++cases,f[n]);
}
return ;
}

BZOJ3963: [WF2011]MachineWorks的更多相关文章

  1. BZOJ3963: [WF2011]MachineWorks 【CDQ+斜率优化DP】*

    BZOJ3963: [WF2011]MachineWorks Description 你是任意性复杂机器公司(Arbitrarily Complex Machines, ACM)的经理,公司使用更加先 ...

  2. bzoj3963[WF2011]MachineWorks cdq分治+斜率优化dp

    3963: [WF2011]MachineWorks Time Limit: 30 Sec  Memory Limit: 256 MBSubmit: 270  Solved: 80[Submit][S ...

  3. 【BZOJ3963】[WF2011]MachineWorks cdq分治+斜率优化

    [BZOJ3963][WF2011]MachineWorks Description 你是任意性复杂机器公司(Arbitrarily Complex Machines, ACM)的经理,公司使用更加先 ...

  4. BZOJ 3963: [WF2011]MachineWorks [CDQ分治 斜率优化DP]

    传送门 当然了WF的题uva hdu上也有 你的公司获得了一个厂房N天的使用权和一笔启动资金,你打算在这N天里租借机器进行生产来获得收益.可以租借的机器有M台.每台机器有四个参数D,P,R,G.你可以 ...

  5. ●BZOJ 3963 [WF2011]MachineWorks

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3963 题解: 斜率优化DP,CDQ分治. 先按时间排序.(规定以下内容的第i台机器的卖出时间 ...

  6. BZOJ 3963 HDU3842 [WF2011]MachineWorks cdq分治 斜率优化 dp

    http://acm.hdu.edu.cn/showproblem.php?pid=3842 写的check函数里写的<但是应该是<=,调了一下午,我是个zz. 就是普通的斜率优化因为有两 ...

  7. 【BZOJ】3963: [WF2011]MachineWorks

    [题意]给定n台在时间di可以买入的机器,pi买入,可在任意时间ri卖出,买入和卖出之间的持有时间每天产生gi金钱,任意时间至多持有一台机器.给定初始钱数c和总天数T,求最大收益.n<=10^5 ...

  8. HDU 3824/ BZOJ 3963 [WF2011]MachineWorks (斜率优化DP+CDQ分治维护凸包)

    题面 BZOJ传送门(中文题面但是权限题) HDU传送门(英文题面) 分析 定义f[i]f[i]f[i]表示在iii时间(离散化之后)卖出手上的机器的最大收益.转移方程式比较好写f[i]=max{f[ ...

  9. BZOJ 3963: [WF2011]MachineWorks 斜率优化 + splay动态维护凸包

    Description 你是任意性复杂机器公司(Arbitrarily Complex Machines, ACM)的经理,公司使用更加先进的机械设备生产先进的机器.原来的那一台生产机器已经坏了,所以 ...

随机推荐

  1. DoTween基本使用

    using UnityEngine; using System.Collections; using DG.Tweening; using UnityEngine.UI; public class D ...

  2. LR回放和录制设置

    1.回放迭代设置:run-time settings 日志:扩展的-参数替换(常用).服务器返回数据.高级 2.回放时视图显示设置 设置 效果

  3. C#文件处理

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  4. Selenium也是一个用于Web应用程序测试的工具

    Selenium也是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE.Mozilla Firefox.Mozilla Suite ...

  5. 自定义Dialog,从下面弹出

    Window window= getWindow(); 只要 打开一个Activity 就有一个窗口存放这个Activity ,手机又很多个窗口,不只是一个窗口 import android.app. ...

  6. C# 语言规范_版本5.0 (第19章 附录A_文档注释)

    A. 文档注释 C# 提供一种机制,使程序员可以使用含有 XML 文本的特殊注释语法为他们的代码编写文档.在源代码文件中,可以使用特定形式的注释来指导工具从这些注释及其后的源代码元素生成 XML.使用 ...

  7. 【4】学习JS 数据结构与算法笔记

    第一章 JS 简介 1. 环境搭建的三种方式 1. 下载浏览器 2. 使用 Web 服务器 ( XAMPP ) 3. 使用 Node.js 搭建 Web 服务器 4. 代码地址>> 2. ...

  8. trove instance service 总结

    def create(self, req, body, tenant_id): # TODO(hub-cap): turn this into middleware LOG.info(_LI(&quo ...

  9. ios 3D Touch功能的实现

    ios9中3D Touch功能是一个新的亮点,这个方便快捷的功能实现也比较简单,废话不多说直接上代码, 一.3D Touch功能添加分为两种(1).静态标签 (2).动态标签 (1).静态添加 这个方 ...

  10. Java特性

    1. Java面向对象三大特性 封装: 将客观事物封装成抽象的类,并且可以针对里面的数据和方法提供不同级别的保护. 继承: 可以基于已经存在的类构造一个新类.继承已经存在的类就可以复用这些类的方法和域 ...