【JZOJ5347】遥远的金字塔
来源:互联网 发布:村上作品推荐 知乎 编辑:程序博客网 时间:2024/05/16 08:40
Description
Solution
首先一个策略就是选择k层,然后把它下面的都取完。
于是可以设
于是这个式子拆开后可以斜率优化,那么复杂度就是
Code
#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#define fo(i,j,k) for(int i=j;i<=k;i++)#define fd(i,j,k) for(int i=j;i>=k;i--)#define N 20010#define ll long longusing namespace std;ll f[N][110];int a[N],d[N];double g(int j,int k1,int k2){ return (f[k1][j]-f[k2][j])*1.0/(k1-k2);}int main(){ freopen("pyramid.in","r",stdin); freopen("pyramid.out","w",stdout); int n,m; scanf("%d %d",&n,&m); fo(i,1,n) { int x,y; scanf("%d %d",&x,&y); a[i]=y-x+1; } ll ans=0; fo(j,1,m) { int l=1,r=1; memset(d,0,sizeof(d)); fo(i,1,n) { while(l<r && g(j-1,d[l],d[l+1])>a[i]) l++; f[i][j]=max(f[i-1][j],f[d[l]][j-1]+(ll)(i-d[l])*a[i]); ans=max(ans,f[i][j]); while(l<=r && g(j-1,d[r-1],d[r])<g(j-1,d[r],i)) r--; d[++r]=i; } } printf("%lld",ans);}
阅读全文
1 0
- 【JZOJ5347】遥远的金字塔
- jzoj5347. 【NOIP2017提高A组模拟9.5】遥远的金字塔 容斥
- JZOJ5347【NOIP2017提高A组模拟9.5】遥远的金字塔 斜率优化 DP
- 【jzoj5347】【NOIP2017提高A组模拟9.5】【遥远的金字塔】【斜率优化动态规划】
- 【JZOJ 5347】 遥远的金字塔
- NOIP模拟(10.27)T2 遥远的金字塔
- JZOJ 5347. 【NOIP2017提高A组模拟9.5】遥远的金字塔
- 【NOIP2017提高A组模拟9.5】遥远的金字塔 斜率优化详解
- 遥远的回响
- 遥远的记忆
- 遥远的梦想
- 美丽的都遥远
- 遥远国度的呼唤
- 遥远的未来
- 在遥远的北国
- 遥远的祝福
- 遥远的距离
- 最遥远的距离
- MyBatis映射错误,No qualifying bean of type 'xx.xx.UserDao' available
- 微笑面对每一天
- 仿百度页面(html+css)
- Intel82599网卡TCP/IP与FSDK对比测试
- sublime插件
- 【JZOJ5347】遥远的金字塔
- 使用JAVA读写Properties属性文件
- WCF透明代理类,动态调用,支持async/await
- java实现多线程的方法
- Centos6与Centos7防火墙设置与端口开放的方法
- 260. Single Number III
- 【JZOJ 5260】 区间第k小
- .NET Framework 的容器
- 华为硬件通用类笔试总结