JZOJ 5347. 遥远的金字塔
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. 遥远的金字塔相关推荐
- ECCV2020 | 即插即用,涨点明显!FPT:特征金字塔Transformer
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 这篇文章收录于ECCV2020,将Transformer机制应用于对特征金字塔FPN的改进上,整体思路 ...
- 最值得你收藏的金字塔之谜详解
1. 概述 在古埃及几千年的历史中,埃及人创造了辉煌的文明.说起古埃及的文明,人们首先想到的是金字塔,因为金字塔不仅是古埃及的象征,而且体现了全世界古代文明的最高成就.在世界古代七大奇迹里,金字塔虽然 ...
- 建立在互联网上的公益金字塔
公益的背后往往隐藏着争议.作为知名企业的一种典型的市场行为,以及富豪企业家和大腕明星们的人气表演,公益常常被娱乐化公关化,并因此在前面的几年时间里深受老百姓的诟病.如果不是这个原因,也就不会有那些林林 ...
- 学习动力之“学习金字塔 (爱德加•戴尔)”理论
一.什么是学习金字塔? 学习金字塔是美国缅因州的国家训练实验室研究成果,它用数字形式形象显示了:采用不同的学习方式,学习者在两周以后还能记住内容(平均学习保持率)的多少.它是一种现代学习方式的理论.最 ...
- 《OpenCV3编程入门》学习笔记6 图像处理(六)图像金字塔与图片尺寸缩放
6.6 图像金字塔与图片尺寸缩放 6.6.1 图像金字塔 1.图像金字塔是图像中多尺度表达的一种,主要用于图像分割,是一种以多分辨率解释图像的结构,通过梯次向下采样获得分辨率逐步降低的图象集合 2.分 ...
- OpenCV+python:图像金字塔
1,图像金字塔的概念 图像金字塔是一种以多分辨率来解释图像的有效但概念简单的结构.应用于图像分割,机器视觉和图像压缩.一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图 ...
- Python,OpenCV图像金字塔cv2.pyrUp(), cv2.pyrDown()
Python,OpenCV图像金字塔cv2.pyrUp, cv2.pyrDown 1. 效果图 2. 原理 2.1 什么是图像金字塔 2.2 金字塔分类 2.3 应用 3. 源码 参考 这篇博客将介绍 ...
- 使用Python和OpenCV构建图像金字塔
使用Python和OpenCV的图像金字塔 1. 效果图 2. 什么是图像金字塔? 3. 依赖 4. 源码 参考 这篇博客将介绍如何使用两种方法构造图像金字塔. 使用Python和OpenCV构建金字 ...
- OpenCV-Python形态变换、图像金字塔、轮廓属性、直方图
OpenCV基础 1. Morphological Transformations(形态变换) 2. Image Pyramids(图像金字塔) 3. Contours(轮廓) 4. 轮廓的特性进阶 ...
- 图像金字塔与resize函数
图像金字塔 将一层层图像比喻成金字塔,层级越高,图像越小,分辨率越低. 高斯金字塔:向下降采样: 拉普拉斯金字塔:向上采样,通过金字塔低层图像重建上层未采样图像: 金字塔的产生 用高斯核对图像进行卷积 ...
最新文章
- 可伸缩视频编码svc
- 动态的管理ASP.NET DataGrid数据列【转载】
- 小白初涉,先试试水。涉及Python,C语言基础,机器学习等
- Open Live Writer - TargetInvocationException
- 实现编辑商品信息功能
- markdown 目录缩进_页面排版很难吗?一起来学Markdown吧!01基础语法
- 结对编程其实可以变变?
- C++ 智能指针unique_ptr的简单实现
- Linux 之CentOS7-VSFTP搭建
- erlang 变量存储在哪里_[Erlang开发之路]十九、用ets和dets储存数据
- 单片机开发系列(一)之Keil 5 安装使用教程
- ae渲染出现错误是什么问题_AE渲染输出总是损坏怎么办-解决AE渲染输出被损坏的方法 - 河东软件园...
- 铁路订票系统的简单设计(转)
- 反证法与归谬法的区别
- SSM整合-内涵基本SSM开发基本结构框架
- 什么是变量?变量的本质是什么?变量的生命周期和作用域
- AD(九)原理图Value值核对、网路编号核对、元件名称核对
- 献给80还有少数90
- 关于GetDC()和ReleaseDC()的问题
- R语言多层桑基图_R语言轻松搞定用户路径桑基图
热门文章
- 什么专业的会学python语言_还在纠结学什么编程语言吗?Python可能会“教”你做人...
- jquery 滚动到某个div_如何使用jQuery获取父元素
- PAT (Basic Level) Practice1009 说反话
- java Iterator源码
- Cmake构建_设置debug与release输出路径
- 使用 nginx 搭建简易文件服务器
- 【云服务月刊】2018年第7期:云栖大会门票免费送!阿里云MVP招募,就等你了!...
- 利用双向注意流进行机器理解
- 剑指offer二:替换空格
- IOS 公共类-数字处理