【BZOJ1150】数据备份(动态规划,凸优化)

题面

BZOJ

洛谷

题解

在不考虑\(K\)的情况下很容易\(dp\)

如果把\(K\)考虑进状态显然是\(O(n^2)\)级别。

所以凸优化一下即可。

注意一下是一个下凸函数,所以是没操作一次就要减去一个权值。

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
#define ll long long
#define MAX 100100
inline ll read()
{
ll x=0;bool t=false;char ch=getchar();
while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
if(ch=='-')t=true,ch=getchar();
while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();
return t?-x:x;
}
int n,K;
ll s[MAX];
struct Node{ll x,y;}f[2][MAX];
Node operator+(Node a,int b){return (Node){a.x+b,a.y};}
bool operator<(Node a,Node b){return a.x<b.x;}
void calc(int C)
{
memset(f,63,sizeof(f));
f[0][1]=(Node){0,0};
for(int i=2;i<=n;++i)
{
f[0][i]=min(f[0][i-1],f[1][i-1]);
f[1][i]=(Node){f[0][i-1].x+(s[i]-s[i-1])-C,f[0][i-1].y+1};
}
f[0][n]=min(f[1][n],f[0][n]);
}
int main()
{
n=read();K=read();
for(int i=1;i<=n;++i)s[i]=read();
ll l=0,r=s[n],ans=0;
while(l<=r)
{
ll mid=(l+r)>>1;
calc(mid);
if(f[0][n].y<=K)l=mid+1,ans=f[0][n].x+K*mid;
else r=mid-1;
}
printf("%lld\n",ans);
return 0;
}

最新文章

  1. 《Git教程-廖雪峰》学习笔记
  2. docker 源码分析 三(基于1.8.2版本),NewDaemon启动
  3. 让div固定在顶部不随滚动条滚动
  4. USACO 5.4 Twofive(DP)
  5. iOS-集成阿里百川IMSDK的服务端及客户端
  6. UITableViewCell 自适应高度 ios8特性
  7. 【转】android开发工具Eclipse,androidStudio,adt网盘下载--不错
  8. 亲手用模块化方式写一个jquery QQ表情插件。
  9. Android(java)学习笔记200:Android中View动画之 XML实现 和 代码实现
  10. 【转】ubuntu下解压缩zip,tar,tar.gz和tar.bz2文件
  11. Objective-C日记-Bounds和Frame
  12. selenium爬取百度图片
  13. otter代码在IDEA远程DEBUG方法
  14. textarea--去掉空格的办法
  15. 简单的Windows应用程序命名规则
  16. Feign api调用方式
  17. .NET基于Eleasticsearch搭建日志系统实战演练
  18. 将 nginx 安装成 windows 的方法
  19. SOAPUI 測试Http 协义
  20. SQLServer覆盖索引

热门文章

  1. TPO-22 C2 Revise a music history paper
  2. TPO-20-Apply for the undergraduate research fund
  3. EventBus的基本使用步骤
  4. 基于zookeeper实现分布式锁(续)
  5. RAID卡的结构详解
  6. ResNet——Deep Residual Learning for Image Recognition
  7. Java多线程编程之不可变对象模式
  8. Django_杂
  9. Final发布用户使用报告 -- Thunder团队
  10. TeamWork#3,Week5,Scrum Meeting 11.4