JZOJ 5347. 【NOIP2017提高A组模拟9.5】遥远的金字塔
2024-09-08 18:18:03
题目
分析
毫无疑问 \(dp\)
设 \(f_{i,j}\) 表示选到第 \(i\) 层,已选 \(j\) 个矩阵最大覆盖面积
那么 \(f_{i,j}=\max{f_{l,j}+w_i*(i-l)}\)
显然斜率优化
\(Code\)
#include<cstdio>
#include<iostream>
using namespace std;
typedef long long LL;
int n , k , q[20005];
LL f[20005][105];
struct node{
int x , y , w;
}p[20005];
double slope(int j , int l , int r)
{
return 1.0 * (f[l][j] - f[r][j]) / (l - r);
}
int main()
{
freopen("pyramid.in" , "r" , stdin);
freopen("pyramid.out" , "w" , stdout);
scanf("%d%d" , &n , &k);
for(register int i = 1; i <= n; i++)
scanf("%d%d" , &p[i].x , &p[i].y) , p[i].w = p[i].y - p[i].x + 1;
int h , t;
for(register int j = 1; j <= k; j++)
{
h = t = 1;
for(register int i = 1; i <= n; i++)
{
while (h < t && slope(j - 1 , q[h + 1] , q[h]) > p[i].w) h++;
f[i][j] = f[q[h]][j - 1] + 1LL * p[i].w * (i - q[h]);
while (h <= t && slope(j - 1 , q[t] , q[t - 1]) < slope(j - 1 , i , q[t])) t--;
q[++t] = i;
}
}
LL ans = 0;
for(register int i = 1; i <= n; i++) ans = max(ans , f[i][k]);
printf("%lld" , ans);
}
最新文章
- 细谈Slick(5)- 学习体会和将来实际应用的一些想法
- Python使用QRCode模块生成二维码
- Nginx 笔记与总结(11)Nginx + php-fpm + MySQL 安装 ecshop
- 关于Memo或者Edit之类控件, 直接设置Text无法撤销的解决方案
- HTML--内联元素与块级元素
- [iOS 开发]UITableView第一行显示不完全
- 关于promise
- 第一次使用cnblogs
- python 保障系统(一)
- java的制作";时间账本";
- sql server 一直提示正在还原
- Log.isLoggable之一正确的使用姿势
- Flack--SQLAlchemy
- Web API中的Help Page
- JsonCpp 判断 value 中是否有某个KEY
- Tomcat学习(二)------Tomcat原理详解及请求过程
- HBase入门基础教程之单机模式与伪分布式模式安装(转)
- TotalCommander使用方法,如何对图片批量重命名
- C++ 数据封装
- 【转】shell 编程:冒号 后面跟 等号,加号,减号,问号的意义
热门文章
- SSH(六)hibernate持久层模板于事务管理
- 14 STL-常用算法
- 腾讯云数据库SaaS致力于构建数据库分布式云,为更多更广的用户提供服务
- 社论 22.10.14 区间在线去重k小
- bug处理记录:Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=512M; support was removed in 8.0
- 如何通过C#合并Word文档?
- (admin.E104) &#39;XXXX&#39; must inherit from &#39;InlineModelAdmin&#39;.
- 通过GitHub和阿里云自定义域名实现https认证
- DP经典例题——LIS&;LCS
- vue3 递归组件 树形组件