【BZOJ-4518】征途 DP + 斜率优化
4518: [Sdoi2016]征途
Time Limit: 10 Sec Memory Limit: 256 MB
Submit:
230 Solved: 156
[Submit][Status][Discuss]
Description
Input
Output
一个数,最小方差乘以 m^2 后的值
Sample Input
1 2 5 8 6
Sample Output
HINT
1≤n≤3000,保证从 S 到 T 的总路程不超过 30000
Source
Solution
DP + 斜率优化
首先对所求的东西进行一下化简:
即最后的结果为$m*\sum_{i=1}^{m}x_{i}^{2}-\sum_{i=1}^{m}x_{i}$其中$x_{i}$表示第$i$天走的路段总和
很显然有$\sum_{i=1}^{m}x_{i}$为定值,那么只需要最小化$\sum_{i=1}^{m}x_{i}^{2}$
那么考虑$f[i][j]$表示$i$天共走了$j$段路的最优
首先可以有某天停滞不前,那么很容易发现,若要最优,则不可能停滞不前
可以得到转移$dp[i][j]=min(dp[i][j],dp[i-1][j-k]+(sum[j]-sum[j-k])^{2}),k=1-j$
那么固定下$i$后,很显然对于$j$是满足斜率优化的
那么化简就可以得到$\frac{dp[i-1][k_{1}]+sum[k_{1}]^{2}-dp[i-1][k_{2}]-sum[k_{2}]^{2}}{sum[k_{1}]-sum[k_{2}]}<2*sum[j]$
那么斜率优化即可,自己还打了个滚动数组,不过貌似毫无意义
Code
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
using namespace std;
inline int read()
{
int x=,f=; char ch=getchar();
while (ch<'' || ch>'') {if (ch=='-') f=-; ch=getchar();}
while (ch>='' && ch<='') {x=x*+ch-''; ch=getchar();}
return x*f;
}
#define maxn 3010
int n,m; int dis[maxn],que[maxn],l,r;
long long dp[][maxn],sum[maxn];
long long pf(long long x) {return x*x;}
inline double slope(int t,int i,int j)
{
return (double)(dp[t][i]+pf(sum[i])-dp[t][j]-pf(sum[j]))/(double)(sum[i]-sum[j]);
}
int main()
{
n=read(),m=read();
for (int i=; i<=n; i++) dis[i]=read(),sum[i]=sum[i-]+dis[i];
memset(dp,,sizeof(dp)); dp[][]=;
for (int t=,i=; i<=m; i++,t^=,l=r=)
for (int tmp,j=; j<=n; j++)
{
while (l<r && slope(t^,que[l],que[l+])<(sum[j]<<)) l++;
tmp=que[l];
dp[t][j]=pf(sum[j]-sum[tmp])+dp[t^][tmp];
while (l<r && slope(t^,que[r],que[r-])>slope(t^,que[r],j)) r--;
que[++r]=j;
}
printf("%lld\n",m*dp[m&][n]-pf(sum[n]));
return ;
}
在BZOJ上好像排名不高啊....
【BZOJ-4518】征途 DP + 斜率优化的更多相关文章
- BZOJ - 4518: 征途(斜率优化,求N数划分为M区间的最小方差)
注意初始化...等等补 #include<bits/stdc++.h> #define ll long long using namespace std; ; int q[maxn],he ...
- BZOJ.4072.[SDOI2016]征途(DP 斜率优化)
题目链接 题目要求使得下面这个式子最小(\(\mu=\frac{\sum_{i=1}^ma_i}{m}\)是平均数,\(a_i\)为第\(i\)段的和): \[\frac{\sum_{i-1}^m(\ ...
- BZOJ 3156: 防御准备( dp + 斜率优化 )
dp(i)表示处理完[i,n]且i是放守卫塔的最小费用. dp(i) = min{dp(j) + (j-i)(j-i-1)/2}+costi(i<j≤N) 然后斜率优化 ------------ ...
- BZOJ4518: [Sdoi2016]征途(dp+斜率优化)
Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1875 Solved: 1045[Submit][Status][Discuss] Descript ...
- 【BZOJ】1096: [ZJOI2007]仓库建设(dp+斜率优化)
http://www.lydsy.com/JudgeOnline/problem.php?id=1096 首先得到dp方程(我竟然自己都每推出了QAQ)$$d[i]=min\{d[j]+cost(j+ ...
- BZOJ 1096: [ZJOI2007]仓库建设(DP+斜率优化)
[ZJOI2007]仓库建设 Description L公司有N个工厂,由高到底分布在一座山上.如图所示,工厂1在山顶,工厂N在山脚.由于这座山处于高原内陆地区(干燥少雨),L公司一般把产品直接堆放在 ...
- 【BZOJ-3437】小P的牧场 DP + 斜率优化
3437: 小P的牧场 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 705 Solved: 404[Submit][Status][Discuss ...
- BZOJ 1767] [Ceoi2009] harbingers (斜率优化)
[BZOJ 1767] [Ceoi2009] harbingers (斜率优化) 题面 给定一颗树,树中每个结点有一个邮递员,每个邮递员要沿着唯一的路径走向capital(1号结点),每到一个城市他可 ...
- 【BZOJ-1010】玩具装箱toy DP + 斜率优化
1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 8432 Solved: 3338[Submit][St ...
随机推荐
- JDK7中的新特性 The try-with-resources Statement
https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html 类似于这样的代码 try ( By ...
- 【转】【MySql】mysql存储过程中的异常处理
定义异常捕获类型及处理方法: DECLARE handler_action HANDLER FOR condition_value [, condition_value] ... statement ...
- lecture8-RNN的训练方法之二三
HInton第8课,之所以说之二三,是因为训练RNN的四种方法之一:长短时记忆在lecture7中介绍过了,这里介绍的是第二和第三种方法:HF优化和Echo (这个字觉得翻译成回声是不是欠妥,所以保留 ...
- 如何用 fiddler 捕获 https 请求
安装完 Fiddler 后,我们每次打开浏览器输入 url,Fiddler 便会捕获到我们的 http 请求(Fiddler 是以代理 web 服务器的形式工作的,它使用代理地址:127.0.0.1, ...
- Android 开发1000问笔记
11.android使用全局变量 定义Data类继承Application 在manifest.xml中声明 http://blog.csdn.net/feiyangxiaomi/article/de ...
- VR的UI、UX设计原则
国外其实有不少关于VR用户体验的研究 总结一下我所了解的: Cardboard Design Lab 1. 使用十字线(比较适用于移动VR.一体机) 2.有深度的UI与眼睛疲劳: 离眼睛近的UI,物体 ...
- js的几种排序
转载:http://www.jb51.net/article/81520.htm 一.冒泡排序 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ...
- Ubuntu Terminal Shortcut
Not all of the shortcuts are useful.Only remeber the most useful. 移动类Ctrl + a - Jump to the start o ...
- MVC视图引擎优化
请首先看如下内容: 未找到视图"Index"或其母版视图,或没有视图引擎支持搜索的位置.搜索了以下位置: ~/Views/Home/Index.aspx~/Views/Home/I ...
- 理解 Paxos
Paxos是前段时间刚获得图灵奖的大神Leslie Lamport所提出的,是用来解决分布式系统中的一致性问题的算法.该算法对于分布式系统的重要性,在这里不再赘言.了解过Paxos的朋友应该都知道,要 ...