[DP优化方法之斜率DP]
什么是斜率dp呢 大概就把一些单调的分组问题 从O(N^2)降到O(N) 具体的话我就不多说了 看论文:
http://www.cnblogs.com/ka200812/archive/2012/08/03/2621345.html
我自己也补充几句:
其实斜率dp有很多种打法 有凸包 有截距 有直接比较斜率的 因为我比较弱 所以的话就学最弱智的比较斜率的 听wph说截距很好理解
然后的话 讲课的时候scy说什么要证单调性什么鬼的 我在学的过程中好像没遇到就不管了 虽然我很弱 反正我能AC就行了
我们要知道的一点是我们要维护的是斜率递增还是递减的 这很重要 然后还要知道什么时候左边端点优 什么时候右边端点优
我做这种题就是 先枚举k<j<i 然后列出式子化简 变成(.....) / (.....) < 或者 > x[i] 然后设两条斜率为g[i,j] g[j,k]
看看g[i,j]<g[j,k] 或者 g[i,j]>g[j,k]的情况 看看有没有使j最不优的情况删掉j 然后描出这个队列里面合法的点 就知道是单调递增还是递减了
其实我说的很乱 别看好了 直接上例题
[Usaco2008 Mar]土地购买 |
首先这一道题是求max的 我们自然要办法处理一下 先按x和y从小到大排序 我们发现 当i>j xi>xj yi>yj的时候 j是废的 所以我们要重新搞一遍 使得xi>xj yi<yj
这样就变成了x递增y递减的东西
然后斜率dp搞一下就好了 注意如果没删去那些没用的直接搞会错的 因为如果假设i>j i对于j来说j是废的 那么的话F[i]就是继承F[j] 就是把i和j分成两组 然后的话j又比j-1优(会有可能的好像我想了一下) 所以的话就继承了j的使原来不优 但是的话j-1不优是因为Y[j-1+1]的影响了 (想一下 我就因为这个wa了)
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<cmath>
#include<climits>
#define Maxn 50010
using namespace std;
pair<double,double>pr[Maxn]; int N;
bool Cmp(const pair<double,double> &x,const pair<double,double> &y){if(x.first!=y.first) return x.first<y.first; return x.second<y.second;}
pair<double,double>S[Maxn]; int top=; int Q[Maxn],head,tail; double F[Maxn];
inline double Slop(int j,int k){return (F[j]-F[k])/(S[k+].second-S[j+].second);}
int main()
{
scanf("%d",&N); for(int i=;i<=N;i++) scanf("%lf%lf",&pr[i].first,&pr[i].second);
sort(pr+,pr+N+,Cmp); S[]=make_pair(,LLONG_MAX);
for(int i=;i<=N;i++){while(pr[i].second>=S[top].second) top--; S[++top]=pr[i];}
head=; tail=; Q[head]=;
for(int i=;i<=top;i++)
{
while(head<tail&&Slop(Q[head],Q[head+])<=S[i].first) head++;
F[i]=F[Q[head]]+S[i].first*S[Q[head]+].second;
while(head<tail&&Slop(Q[tail-],Q[tail])>=Slop(Q[tail],i)) tail--; Q[++tail]=i;
}
return printf("%.0lf\n",F[top]),;
}
/*
4
100 1
15 15
20 5
1 100
1<=N<=50000
*/
[DP优化方法之斜率DP]的更多相关文章
- DP 优化方法大杂烩 & 做题记录 I.
标 * 的是推荐阅读的部分 / 做的题目. 1. 动态 DP(DDP)算法简介 动态动态规划. 以 P4719 为例讲一讲 ddp: 1.1. 树剖解法 如果没有修改操作,那么可以设计出 DP 方案 ...
- DP 优化方法合集
0. 前言 写完这篇文章后发现自己对于 DP 的优化一窍不通,所以补了补 DP 的一些优化,写篇 blog 总结一下. 1. 单调队列/单调栈优化 1.2 算法介绍 这应该算是最基础的 DP 优化方法 ...
- [总结]一些 DP 优化方法
目录 注意本文未完结 写在前面 矩阵快速幂优化 前缀和优化 two-pointer 优化 决策单调性对一类 1D/1D DP 的优化 \(w(i,j)\) 只含 \(i\) 和 \(j\) 的项--单 ...
- [DP优化方法之虚树]
首先我们看一篇文章 转自xyz: 给出一棵树. 每次询问选择一些点,求一些东西.这些东西的特点是,许多未选择的点可以通过某种方式剔除而不影响最终结果. 于是就有了建虚树这个技巧..... 我们可以用l ...
- dp常见优化方法
noip范围内的dp优化方法: 加速状态转移 1.前缀和优化 2.单调队列优化 3.线段树或树状数组优化 精简状态 3:精简状态往往是通过对题目本身性质的分析,去省掉一些冗余的状态.相对以上三条套路性 ...
- Slope Trick:解决一类凸代价函数DP优化
[前言] 在补Codeforce的DP时遇到一个比较新颖的题,然后在知乎上刚好 hycc 桑也写了这道题的相关题解,这里是作为学习并引用博客的部分内容 这道题追根溯源发现2016年这个算法已经在API ...
- DP 优化小技巧
收录一些比较冷门的 DP 优化方法. 1. 树上依赖性背包 树上依赖性背包形如在树上选出若干个物品做背包问题,满足这些物品连通.由于 01 背包,多重背包和完全背包均可以在 \(\mathcal{O} ...
- dp优化
入口 A(fzu 1894) 普通的单调队列,trick是进队判断的符号选取(>=wa , >ac). B(poj 2823) 没什么好说的 ,坑爹poj g++,tle ;c++,ac. ...
- 常见的DP优化类型
常见的DP优化类型 1单调队列直接优化 如果a[i]单调增的话,显然可以用减单调队列直接存f[j]进行优化. 2斜率不等式 即实现转移方程中的i,j分离.b单调减,a单调增(可选). 令: 在队首,如 ...
随机推荐
- windows phone 8环境搭建
windows phone 8 开发系列(一)环境搭建 一:前奏说明 本人一名普通的neter,对新玩意有点小兴趣,之前wp7出来的时候,折腾学习过点wp7开发,后来也没怎么用到(主要对微软抛弃w ...
- MySql主从配置实践及其优势浅谈
MySql主从配置实践及其优势浅谈 1.增加两个MySQL,我将C:\xampp\mysql下的MYSQL复制了一份,放到D:\Mysql2\Mysql5.1 修改my.ini(linux下应该是my ...
- 一个意想不到的Javascript内存泄漏
原文:http://point.davidglasser.net/2013/06/27/surprising-javascript-memory-leak.html 本周我在Meter的同事追踪到了一 ...
- Newlife商业源码分享
[商业源码]生日大放送-Newlife商业源码分享 今天是农历六月二十三,是@大石头的生日,记得每年生日都会有很劲爆的重量级源码送出,今天Newlife群和论坛又一次疯狂了,吃水不忘挖井人,好的东西肯 ...
- Servlet的Request.getInputStream()只能读取一次问题
Servlet的Request.getInputStream()只能读取一次问题 这个星期公司的项目接口进行改造,公司的接口有的采用了WebService的方式,有的使用的是Http协议+Servle ...
- 【OpenMesh】创建一个正方体
原文出处: http://openmesh.org/Documentation/OpenMesh-Doc-Latest/tutorial.html 这个例程演示了: 如何声明MyMesh 如何添加顶点 ...
- NSLocalizedString不起作用
程序TESTAPP 环境:XCODE 4.6 OSX 10.8.4 MAC BOOK AIR 2011年版 代码 [doneButton setTitle:NSLocalizedString(@&q ...
- WIN7操作平台获取管理员权限批处理
在WIN7操作平台打开某些文件,如果需要管理员权限才能打开.通过下面的操作就可以获取管理员权限 创建批处理register文件.文件内容为,文件后缀名为.reg.然后双击该文件.打开需要访问的文件,如 ...
- mysql处理存在则更新,不存在则插入(多列唯一索引)
mysql处理某个唯一索引时存在则更新,不存在则插入的情况应该是很常见的,网上也有很多类似的文章,我今天就讲讲当这个唯一的索引是多列唯一索引时可能会遇到的问题和方法. 方法一: 使用 INSERT I ...
- 巧用百度Site App新组件为企业官网打造移动站
一年前我曾经详细介绍过百度Site App,时隔一年的发展,Site App再一次发生了翻天覆地的变化:自定义程度更高.新增电话地图组件.增加流量统计.增加广告管家.生成APP客户端等功能,百度Sit ...