bzoj4518[Sdoi2016] 征途
来源:互联网 发布:mac电脑翻墙 编辑:程序博客网 时间:2024/04/30 11:52
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4518
题目大意:
相当于:n个数字,将其分成m段,每段的数字和为该段的值,使方差最小..
===========================================
题解:
斜率优化【mdzz啊(口亨一定是题目表述不清!!!搞了我那么久
因为分成的段数的固定的,那么平均数sm也是固定的(这里的sum为总和)
所以方程很容易写到:
f[k][i]=f[k-1][j]+(sum[i]-sum[j]-sm)^2;
(设f[k][i]为以i为结尾已经分成了k段,sum[i]为前缀和)
-> 2*(sum[i]-sm)*sum[j]+f[k][i]=f[k-1][j]+sum[j]^2+(sum[i]-sm)^2;
于是截距式就出来了,斜率优化QwQmd自己好zz
因为答案要乘上m^2,所以把m^2直接乘丢到式子里,即将所有数都先*m,最后再除个m,化简过程可以自己试试。
习惯了这种二维搞滚动orz不搞应该也行....吧日常LL咯~(我已经不管究竟要不要了= =反正又不会爆233
#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>#include<algorithm>using namespace std;typedef long long LL;#define maxn 31000int l,r,q[maxn],t;LL sum[maxn],a[maxn],f[2][maxn];LL sqrr(LL x){return x*x;}double X(int j){return sum[j];}double Y(int j){return f[1-t][j]+sqrr(sum[j]);}double slop(int j1,int j2) {return (Y(j2)-Y(j1))/(X(j2)-X(j1));}int main(){int n,m,i,k;LL sm;sm=sum[0]=0;scanf("%d%d",&n,&m);for (i=1;i<=n;i++){scanf("%lld",&a[i]);sm+=a[i];a[i]*=m;sum[i]=sum[i-1]+a[i];}t=1;memset(f,63,sizeof(f));f[0][0]=0;for (i=1;i<=n;i++) f[0][i]=sqrr(sum[i]-sm);for (k=1;k<=m;k++){l=r=1;q[l]=0;memset(f[t],63,sizeof(f[t]));for (i=1;i<=n;i++){while (l<r && slop(q[l],q[l+1])<(sum[i]-sm)*2) l++;int j=q[l];f[t][i]=f[1-t][j]+sqrr(sum[i]-sum[j]-sm);while (l<r && slop(q[r-1],q[r])>slop(q[r],i)) r--;q[++r]=i;}t=1-t;}printf("%lld\n",f[1-t][n]/m);return 0;}
0 0
- BZOJ4518 && SDOi2016 征途
- bzoj4518: [Sdoi2016]征途
- BZOJ4518 [Sdoi2016]征途
- bzoj4518【SDOI2016】征途
- bzoj4518[Sdoi2016] 征途
- bzoj4518: [Sdoi2016]征途
- BZOJ4518: [Sdoi2016]征途
- BZOJ4518: [Sdoi2016]征途
- [BZOJ4518][Sdoi2016]征途(斜率优化dp)
- bzoj4518 [Sdoi2016]征途 (斜率优化)
- bzoj4518 [Sdoi2016]征途(斜率优化dp)
- [BZOJ4518][SDOI2016]征途(斜率优化DP)
- bzoj4518 [ SDOI2016 ] --斜率优化DP
- 【BZOJ4518】征途,斜率优化DP
- BZOJ 4518: [Sdoi2016]征途
- BZOJ 4518: [Sdoi2016]征途
- 4518: [Sdoi2016]征途
- bzoj 4518: [Sdoi2016]征途
- 漫谈程序员系列:那些害死程序员的细节
- AXI总线简介
- 关于线上与线下性能测试结果的差异
- tokudb desc查询比acs查询慢问题定位
- 使用Jsoup解析Html
- bzoj4518[Sdoi2016] 征途
- xhtml
- 相机针孔模型详解
- 配置Django中Session的3种存储方法
- html点击文本框时怎样让手机输入法(键盘)不弹出
- CF 319D Have You Ever Heard About the Word?
- Android Studio目录结构
- 代码托管:Bitbucket入门
- 从SPS帧解析视频分辨率