bzoj3675 [ APIO2014 ] -- 斜率优化DP
来源:互联网 发布:jy零食淘宝店网址 编辑:程序博客网 时间:2024/06/08 06:36
令
然后考虑斜率优化。
将
代码
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;#define N 100010#define ll long longinline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;}inline void Read(ll& x){ char c=nc(); for(;c<'0'||c>'9';c=nc()); for(x=0;c>='0'&&c<='9';x=(x<<3)+(x<<1)+c-48,c=nc());}struct Node{ ll x,y; Node(ll x=0,ll y=0):x(x),y(y){} Node operator - (Node a){ return Node(x-a.x,y-a.y); }}ch[N],T;ll f[2][N],s[N];int i,j,k,n,m,p,t,w[N];bool b;inline bool Check(Node a,Node b){ return (double)a.x*b.y>=(double)a.y*b.x;}int main(){ scanf("%d%d",&n,&m); for(i=1;i<=n;i++)Read(s[i]),s[i]+=s[i-1]; for(i=1;i<=m;i++,b^=1){ k=t=0; for(j=1;j<=n;j++){ while(k>t)k--; while(k<t&&ch[k+1].y-ch[k].y<s[j]*(ch[k+1].x-ch[k].x))k++; f[b][j]=f[b^1][w[k]]+s[w[k]]*(s[j]-s[w[k]]); T.x=s[j];T.y=s[j]*s[j]-f[b^1][j]; while(t&&Check(T-ch[t-1],ch[t]-ch[t-1]))t--; ch[++t]=T;w[t]=j; } } printf("%lld\n",f[b^1][n]); return 0;}
阅读全文
1 0
- bzoj3675 [ APIO2014 ] -- 斜率优化DP
- BZOJ3675 [Apio2014]序列分割 【斜率优化dp】
- [bzoj3675] [Apio2014]序列分割 Split the sequence dp+斜率优化
- [BZOJ3675][Apio2014]序列分割(斜率优化dp)
- 【BZOJ3675】[Apio2014]序列分割【斜率优化】
- BZOJ3675 [Apio2014]序列分割 斜率优化
- bzoj3675 [APIO2014] 序列分割(斜率优化)
- 【斜率优化】BZOJ3675(Apio2014)[序列分割]题解
- 【bzoj3675】[Apio2014]序列分割 单调队列+斜率优化
- 【动态规划17】bzoj3675 [Apio2014]序列分割(斜率优化)
- [BZOJ3675][Apio2014]序列分割-斜率优化-动态规划
- 【BZOJ3675】序列统计,斜率优化DP
- [APIO2014]序列分割(斜率优化dp)
- 3675: [Apio2014]序列分割 斜率优化DP
- BZOJ3675【斜率优化】
- BZOJ 3675 APIO2014 序列分割 斜率优化DP
- [BZOJ 3675][Apio2014]序列分割:DP斜率优化
- bzoj 3675: [Apio2014]序列分割 斜率优化dp
- HDU 6068 Classic Quotation(2017 Multi-University Training Contest 4)
- ARM汇编指令
- js
- Codeforces Round #429
- SQL Server的常用数据类型(字符型)的区别
- bzoj3675 [ APIO2014 ] -- 斜率优化DP
- 如何运行vue项目
- Redux笔记
- 例说数据结构&STL(十三)——pair
- 指针和数组
- Unity3D实现宠物跟随主角的效果图
- selenium的使用和scrapy的简单使用
- 移动硬盘有些分区系统无法识别
- Yahoo网站性能优化的34条军规