Description

Input

Output

Sample Input

5 3
1 6
1 5
3 5
4 4
4 4

Sample Output

15

Data Constraint

做法:

其实这就是很明显的一道斜率优化的dp式子,我们首先可以得到最显然的dp方程,设f[i][j]表示前i层数分成j个不相交的矩形的最大面积,那么我们有:

f[i][j]=max(f[i-k+1][j-1]+(y[i]-x[i])*k),k为与当前这一块联通的矩形宽。

这个式子等价于f[i][k]=max(f[j][k-1]+(y[i]-x[i])*(i-j)),然后就可以斜率优化了(证明?我也忘了。。)

然后事实上转移只跟上一层有关,所以只用两个数组就好啦。

 1 #include <cstdio>
 2 #include <iostream>
 3 #include <cstring>
 4 #define N 20007
 5 #define LL long long
 6 using namespace std;
 7 int n,m,q[N];
 8 LL f[N],g[N],w[N],ans;
 9
10 int main(){
11     freopen("pyramid.in","r",stdin);
12     freopen("pyramid.out","w",stdout);
13     scanf("%d%d",&n,&m);
14     for (int i=1;i<=n;i++){
15         int x,y;
16         scanf("%d%d",&x,&y);
17         w[i]=y-x+1;
18     }
19     for (int i=1;i<=n;i++)    f[i]=-1e14;
20     for (int i=1;i<=m;i++){
21         int head=0,tail=0;
22         q[0]=0;
23         for (int i=1;i<=n;i++){
24             for(;(head<tail)&&(f[q[head+1]]-f[q[head]]>w[i]*(q[head+1]-q[head]));head++);
25             g[i]=f[q[head]]+w[i]*(i-q[head]);
26             if (i!=n){
27                 for(;(head<tail)&&((f[q[tail]]-f[q[tail-1]])*(i-q[tail])<(f[i]-f[q[tail]])*(q[tail]-q[tail-1]));tail--);
28                 q[++tail]=i;
29             }
30         }
31         for (int i=1;i<=n;f[i]=g[i],i++);
32     }
33     for (int i=1;i<=n;i++)    ans=ans>f[i]?ans:f[i];
34     printf("%lld",ans);
35 }

View Code

转载于:https://www.cnblogs.com/traveller-ly/p/9610784.html

JZOJ 5347. 遥远的金字塔相关推荐

  1. ECCV2020 | 即插即用,涨点明显!FPT:特征金字塔Transformer

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 这篇文章收录于ECCV2020,将Transformer机制应用于对特征金字塔FPN的改进上,整体思路 ...

  2. 最值得你收藏的金字塔之谜详解

    1. 概述 在古埃及几千年的历史中,埃及人创造了辉煌的文明.说起古埃及的文明,人们首先想到的是金字塔,因为金字塔不仅是古埃及的象征,而且体现了全世界古代文明的最高成就.在世界古代七大奇迹里,金字塔虽然 ...

  3. 建立在互联网上的公益金字塔

    公益的背后往往隐藏着争议.作为知名企业的一种典型的市场行为,以及富豪企业家和大腕明星们的人气表演,公益常常被娱乐化公关化,并因此在前面的几年时间里深受老百姓的诟病.如果不是这个原因,也就不会有那些林林 ...

  4. 学习动力之“学习金字塔 (爱德加•戴尔)”理论

    一.什么是学习金字塔? 学习金字塔是美国缅因州的国家训练实验室研究成果,它用数字形式形象显示了:采用不同的学习方式,学习者在两周以后还能记住内容(平均学习保持率)的多少.它是一种现代学习方式的理论.最 ...

  5. 《OpenCV3编程入门》学习笔记6 图像处理(六)图像金字塔与图片尺寸缩放

    6.6 图像金字塔与图片尺寸缩放 6.6.1 图像金字塔 1.图像金字塔是图像中多尺度表达的一种,主要用于图像分割,是一种以多分辨率解释图像的结构,通过梯次向下采样获得分辨率逐步降低的图象集合 2.分 ...

  6. OpenCV+python:图像金字塔

    1,图像金字塔的概念 图像金字塔是一种以多分辨率来解释图像的有效但概念简单的结构.应用于图像分割,机器视觉和图像压缩.一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图 ...

  7. Python,OpenCV图像金字塔cv2.pyrUp(), cv2.pyrDown()

    Python,OpenCV图像金字塔cv2.pyrUp, cv2.pyrDown 1. 效果图 2. 原理 2.1 什么是图像金字塔 2.2 金字塔分类 2.3 应用 3. 源码 参考 这篇博客将介绍 ...

  8. 使用Python和OpenCV构建图像金字塔

    使用Python和OpenCV的图像金字塔 1. 效果图 2. 什么是图像金字塔? 3. 依赖 4. 源码 参考 这篇博客将介绍如何使用两种方法构造图像金字塔. 使用Python和OpenCV构建金字 ...

  9. OpenCV-Python形态变换、图像金字塔、轮廓属性、直方图

    OpenCV基础 1. Morphological Transformations(形态变换) 2. Image Pyramids(图像金字塔) 3. Contours(轮廓) 4. 轮廓的特性进阶 ...

  10. 图像金字塔与resize函数

    图像金字塔 将一层层图像比喻成金字塔,层级越高,图像越小,分辨率越低. 高斯金字塔:向下降采样: 拉普拉斯金字塔:向上采样,通过金字塔低层图像重建上层未采样图像: 金字塔的产生 用高斯核对图像进行卷积 ...

最新文章

  1. 可伸缩视频编码svc
  2. 动态的管理ASP.NET DataGrid数据列【转载】
  3. 小白初涉,先试试水。涉及Python,C语言基础,机器学习等
  4. Open Live Writer - TargetInvocationException
  5. 实现编辑商品信息功能
  6. markdown 目录缩进_页面排版很难吗?一起来学Markdown吧!01基础语法
  7. 结对编程其实可以变变?
  8. C++ 智能指针unique_ptr的简单实现
  9. Linux 之CentOS7-VSFTP搭建
  10. erlang 变量存储在哪里_[Erlang开发之路]十九、用ets和dets储存数据
  11. 单片机开发系列(一)之Keil 5 安装使用教程
  12. ae渲染出现错误是什么问题_AE渲染输出总是损坏怎么办-解决AE渲染输出被损坏的方法 - 河东软件园...
  13. 铁路订票系统的简单设计(转)
  14. 反证法与归谬法的区别
  15. SSM整合-内涵基本SSM开发基本结构框架
  16. 什么是变量?变量的本质是什么?变量的生命周期和作用域
  17. AD(九)原理图Value值核对、网路编号核对、元件名称核对
  18. 献给80还有少数90
  19. 关于GetDC()和ReleaseDC()的问题
  20. R语言多层桑基图_R语言轻松搞定用户路径桑基图

热门文章

  1. 什么专业的会学python语言_还在纠结学什么编程语言吗?Python可能会“教”你做人...
  2. jquery 滚动到某个div_如何使用jQuery获取父元素
  3. PAT (Basic Level) Practice1009 说反话
  4. java Iterator源码
  5. Cmake构建_设置debug与release输出路径
  6. 使用 nginx 搭建简易文件服务器
  7. 【云服务月刊】2018年第7期:云栖大会门票免费送!阿里云MVP招募,就等你了!...
  8. 利用双向注意流进行机器理解
  9. 剑指offer二:替换空格
  10. IOS 公共类-数字处理