http://acm.hdu.edu.cn/showproblem.php?pid=3842

写的check函数里写的<但是应该是<=,调了一下午,我是个zz。

就是普通的斜率优化因为有两层需要排序的所以一层sort一层cdq分治

 #include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
#define LL long long
#define pa pair< long long ,long long >
const int maxn=;
int n;
LL D,C;
struct nod{
LL d,p,r,g,h;
}a[maxn];
LL f[maxn];
pa e[maxn],sta[maxn];
bool mcmp(nod aa,nod bb){
return aa.d<bb.d;
}
bool Chk(pa aa,pa bb,pa cc){
return ((double)((double)(aa.second-bb.second)*(double)(cc.first-bb.first)-
(double)(bb.second-cc.second)*(double)(bb.first-aa.first)))>=;
}
void mcdq(int l,int r){
if(l==r)return;
int mid=(l+r)/;
mcdq(l,mid);
int cnt=,tail=;
for(int i=l;i<=mid;i++){
if(f[i]>=a[i].p){e[++cnt]=make_pair(a[i].g,a[i].h+f[i]);}
}
sort(e+,e++cnt);
for(int i=;i<=cnt;i++){
while(tail>&&Chk(sta[tail-],sta[tail],e[i]))tail--;
sta[++tail]=e[i];
}int j=;//cout<<tail<<endl;
for(int i=mid+;i<=r;i++){
while(j<tail&&sta[j].second+sta[j].first*a[i].d<sta[j+].second+sta[j+].first*a[i].d)j++;
f[i]=max(f[i],sta[j].second+sta[j].first*a[i].d);
}
mcdq(mid+,r);
}
int main(){
int z=;
while(~scanf("%d%lld%lld",&n,&C,&D)){
if(n==&&C==&&D==)break;
f[]=C;
for(int i=;i<=n;i++){
scanf("%lld%lld%lld%lld",&a[i].d,&a[i].p,&a[i].r,&a[i].g);
a[i].h=a[i].r-a[i].p-(a[i].d+)*a[i].g;
}sort(a+,a++n,mcmp);++n;
a[n].d=D+;a[n].g=a[n].p=; a[n].h=;
for(int i=;i<=n;i++)f[i]=f[i-];
mcdq(,n);
printf("Case %d: %lld\n",++z,f[n]);
}
return ;
}

BZOJ 3963 HDU3842 [WF2011]MachineWorks cdq分治 斜率优化 dp的更多相关文章

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

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

  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 1492: [NOI2007]货币兑换Cash [CDQ分治 斜率优化DP]

    传送门 题意:不想写... 扔链接就跑 好吧我回来了 首先发现每次兑换一定是全部兑换,因为你兑换说明有利可图,是为了后面的某一天两种卷的汇率差别明显而兑换 那么一定拿全利啊,一定比多天的组合好 $f[ ...

  5. 【uoj#244】[UER #7]短路 CDQ分治+斜率优化dp

    题目描述 给出 $(2n+1)\times (2n+1)$ 个点,点 $(i,j)$ 的权值为 $a[max(|i-n-1|,|j-n-1|)]$ ,找一条从 $(1,1)$ 走到 $(2n+1,2n ...

  6. BZOJ1492:[NOI2007]货币兑换 (CDQ分治+斜率优化DP | splay动态维护凸包)

    BZOJ1492:[NOI2007]货币兑换 题目传送门 [问题描述] 小Y最近在一家金券交易所工作.该金券交易所只发行交易两种金券:A纪念券(以下简称A券)和B纪念券(以下简称B券).每个持有金券的 ...

  7. bzoj1492[NOI2007]货币兑换Cash cdq分治+斜率优化dp

    1492: [NOI2007]货币兑换Cash Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 5541  Solved: 2228[Submit][Sta ...

  8. bzoj3672/luogu2305 购票 (运用点分治思想的树上cdq分治+斜率优化dp)

    我们都做过一道题(?)货币兑换,是用cdq分治来解决不单调的斜率优化 现在它放到了树上.. 总之先写下来dp方程,$f[i]=min\{f[j]+(dis[i]-dis[j])*p[i]+q[i]\} ...

  9. [BZOJ1492] [NOI2007] 货币兑换Cash(cdq分治+斜率优化)

    [BZOJ1492] [NOI2007] 货币兑换Cash(cdq分治+斜率优化) 题面 分析 dp方程推导 显然,必然存在一种最优的买卖方案满足:每次买进操作使用完所有的人民币:每次卖出操作卖出所有 ...

随机推荐

  1. Velocity VelocityEngine 支持多种loader 乱码问题

    最近升级团队的代码生成工具,此工具是velocity实现的. 之前习惯使用UTF-8编码,现在团队使用GBK. 所以遇到一种场景,模板文件使用UTF-8(习惯了所有任性),输出文件使用GBK(项目需要 ...

  2. oracle05

    1. 数据处理 说完了所有的查询,下面说说增.删.改. 1.1. Update 在plsql Developer工具中,加上rowid可以更改数据. 使用工具进行更新数据的操作 在工具中更新数据方式一 ...

  3. Pycharm和IntelliJ IDEA激活 2017.3.x版本

    PyCharm 2017.3.3 (Professional Edition) 已经屏蔽了http://www.imsxm.com/   http-server激活方式,我根据参考教程搭建了一个,如有 ...

  4. HTML 解析 textarea 中的换行符

    用户在textarea中输入的换行符,传到后台,再返回前端,展示在div中. 如果需要div显示为与textarea 一致的效果,需添加: .detail { white-space: pre-lin ...

  5. 20155303 2016-2017-2 《Java程序设计》第三周学习总结

    20155303 2016-2017-2 <Java程序设计>第三周学习总结 教材学习内容总结 第四章 学会如何查询Java API文件对于Java的学习很有帮助,可以了解到如何使用各种方 ...

  6. python并发爬虫利器tomorrow(一)

    tomorrow是我最近在用的一个爬虫利器,该模块属于第三方的一个模块,使用起来非常的方便,只需要用其中的threads方法作为装饰器去修饰一个普通的函数,既可以达到并发的效果,本篇将用实例来展示to ...

  7. Flask:使用jsonify()转换为JSON的数据在Chrome显示为Unicode编码

    Chrome 66,Flask 1.0.2,MongoDB 3.6.3, 创建了一个Flask应用,在将MongoDB中的数据使用PyMongo包获取后,再使用jsonify转换为JSON格式发送回请 ...

  8. ASP.NET Web Api OwinSelfHost Restful 使用

    一.前言 总结一下什么是RESTful架构: (1)每一个URI代表一种资源: (2)客户端和服务器之间,传递这种资源的某种表现层: (3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现&q ...

  9. 安装pywin32模块

    1.先下载pywin32对于的版本 下载地址:python for windows extensions 2.选择自己对应的版本,我的是python3.5版本 注意注意注意:此处一定要看清楚自己的py ...

  10. python 统计MySQL表信息

    一.场景描述 线上有一台MySQL服务器,里面有几十个数据库,每个库有N多表. 现在需要将每个表的信息,统计到excel中,格式如下: 库名 表名 表说明 建表语句 db1 users 用户表 CRE ...