题目链接: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. 如何写兼容浏览器和Node.js环境的Javascript代码

    如果有打开过jQuery的源码(从1.11及以后),或者Vue.js.React.js的源码,都会在文件的前面看见这样一段代码: ( function( global, factory ) { &qu ...

  2. nyoj 79 拦截导弹 (动态规划)

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=79 题意即求最长单调递减子序列 #include<iostream> #inc ...

  3. C++类继承中,基类/当前对象属性/当前对象的构造顺序

    [1]中提到,规范的派生类构造函数三个要点: 首先创建基类对象 应通过成员初始化列表,创建基类对象 应该初始化本派生类新增的成员变量 那在构造派生类实例的过程中,其基类(以及多继承的时候多个基类)/当 ...

  4. VS2010 编译 sqlite3 生成动态库和链接库

    如果想以dll的方式使用sqlite而新建空的dll工程,添加sqlite源文件,会发现能生成dll,但缺乏lib函数信息映射库,单独使用dll文件是比较麻烦的,而网上多数做法是通过lib.exe手动 ...

  5. Tiny6410之UART裸机驱动

    UART简介: UART(Universal Asynchronous Receiver and Transmitter)通用异步收发器(异步串行通信口),是一种通用的数据通信协议,它包括了RS232 ...

  6. android获得屏幕高度和宽度(display中getSize(Point)方法使用)

    方法一: public static int SCREEN_WIDTH; public static int SCREEN_HEIGHT; //获取屏幕 WindowManager wm = (Win ...

  7. pgsql获取表相关数据

    import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.P ...

  8. Android 不能返回 parent Activity 的问题

    使用 ActionBar,开启返回按钮: 在 Activity 的 onCreate 中添加下面代码 getSupportActionBar().setDisplayHomeAsUpEnabled(t ...

  9. linux统计单词数

    sort +awk+uniq 统计文件中出现次数最多的前10个单词 实例 cat logt.log|sort -s -t '-' -k1n |awk '{print $1;}'|uniq -c|sor ...

  10. 【1】JavaScript编程全解笔记(一)

    1.概述 本书涵盖了 JavaScript 各个方面的主题,从客户端以及服务端 JavaScript 等基础内容,主要讲了  HTML5.Web API.Node.js 与 WebSocket 等技术 ...