bzoj 3437: 小P的牧场【斜率优化】
emmm妹想到要倒着推
先假设只在n建一个控制站,这样的费用是\( \sum_{i=1}^{n} b[i]*(n-i) \)的
然后设f[i]为在i到n键控制站,并且i一定建一个,能最多节省下的费用,那么显然转移是\( f[i]=max(f[j]+s[i]*(j-i)-a[i]) \),s是b的前缀和
然后显然要斜率优化,随便推一推就行了
\]
\]
#include<iostream>
#include<cstdio>
using namespace std;
const int N=1000005;
int n,q[N],l=1,r;
long long a[N],b[N],s[N],f[N],ans;
int read()
{
int r=0,f=1;
char p=getchar();
while(p>'9'||p<'0')
{
if(p=='-')
f=-1;
p=getchar();
}
while(p>='0'&&p<='9')
{
r=r*10+p-48;
p=getchar();
}
return r*f;
}
double wk(int j,int k)
{
return (double)(f[j]-f[k])/(double)(j-k);
}
int main()
{
n=read();
for(int i=1;i<=n;i++)
a[i]=read();
for(int i=1;i<=n;i++)
b[i]=read(),s[i]=s[i-1]+b[i];
q[++r]=n;
for(int i=n-1;i>=1;i--)
{
while(l<r&&wk(q[l],q[l+1])<-1.0*s[i])
l++;
f[i]=f[q[l]]+s[i]*(q[l]-i)-a[i];
ans=max(ans,f[i]);
while(l<r&&wk(q[r],q[r-1])>wk(i,q[r]))
r--;
q[++r]=i;
}
ans*=-1;
for(int i=1;i<=n;i++)
ans+=b[i]*(n-i);
printf("%lld\n",ans+a[n]);
return 0;
}
/*
4
2 4 2 4
3 1 4 2
*/
bzoj 3437: 小P的牧场【斜率优化】的更多相关文章
- BZOJ 3437: 小P的牧场 斜率优化DP
3437: 小P的牧场 Description 背景 小P是个特么喜欢玩MC的孩纸... 描述 小P在MC里有n个牧场,自西向东呈一字形排列(自西向东用1…n编号),于是他就烦恼了:为了控制这n个牧场 ...
- bzoj 3437: 小P的牧场 -- 斜率优化
3437: 小P的牧场 Time Limit: 10 Sec Memory Limit: 128 MB Description 小P在MC里有n个牧场,自西向东呈一字形排列(自西向东用1…n编号), ...
- bzoj3437小P的牧场 斜率优化dp
3437: 小P的牧场 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1542 Solved: 849[Submit][Status][Discus ...
- BZOJ 3437 小P的牧场(斜率优化DP)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3437 [题目大意] n个牧场排成一行,需要在某些牧场上面建立控制站, 每个牧场上只能建 ...
- 【BZOJ3437】小P的牧场 斜率优化
[BZOJ3437]小P的牧场 Description 背景 小P是个特么喜欢玩MC的孩纸... 描述 小P在MC里有n个牧场,自西向东呈一字形排列(自西向东用1…n编号),于是他就烦恼了:为了控制这 ...
- 【bzoj3437】小P的牧场 斜率优化dp
题目描述 背景 小P是个特么喜欢玩MC的孩纸... 描述 小P在MC里有n个牧场,自西向东呈一字形排列(自西向东用1…n编号),于是他就烦恼了:为了控制这n个牧场,他需要在某些牧场上面建立控制站,每个 ...
- BZOJ3437:小P的牧场(斜率优化DP)
Description 小P在MC里有n个牧场,自西向东呈一字形排列(自西向东用1…n编号),于是他就烦恼了:为了控制这n个牧场,他需要在某些牧场上面建立控制站,每个牧场上只能建立一个控制站,每个控制 ...
- BZOJ 3437: 小P的牧场
传送门 显然考虑 $dp$,设 $f[i]$ 表示前 $i$ 个牧场都被控制的最小代价 那么枚举所有 $j<i$ ,$f[i]=f[j]+val[i][j]+A[i]$ $val[i][j]$ ...
- bzoj3427小P的牧场(斜率优化dp)
小P在MC里有n个牧场,自西向东呈一字形排列(自西向东用1…n编号),于是他就烦恼了:为了控制这n个牧场,他需要在某些牧场上面建立控制站,每个牧场上只能建立一个控制站,每个控制站控制的牧场是它所在的牧 ...
随机推荐
- DELL IDRAC API接口开发文档翻译及client模块
今天和DELL官网要了一份关于服务器IDRAC 版本7/8 的API开发文档,花了一天的时间,进行了翻译,不一定全部准确,但对于英语不好的人会有所帮助.也不用重复造轮子了.下载链接: IDRAC AP ...
- HUNAN 11567 Escaping (最大流)
http://acm.hunnu.edu.cn/online/?action=problem&type=list&courseid=0&querytext=&pagen ...
- poj - 3254 Corn Fields (状态压缩dp入门)
http://poj.org/problem?id=3254 参考:http://blog.csdn.net/accry/article/details/6607703 农夫想在m*n的土地上种玉米, ...
- CodeForces 593A 2Char
暴力. #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> u ...
- BZOJ——2697: 特技飞行
http://www.lydsy.com/JudgeOnline/problem.php?id=2697 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: ...
- SSM!这就是你要的条条框框!
第一次写博 1.导jar包 2,.表和实体类 实体类:com.bao.entity[Student] private int stuNo; private String stuName; privat ...
- Date日期模式
package cn.zmh.Date; import java.text.SimpleDateFormat; import java.util.Date; public class DateDemo ...
- Spring的@Autowired注解
以下内容引用自http://wiki.jikexueyuan.com/project/spring/annotation-based-configuration/spring-autowired-an ...
- mysql too many connection 解决办法
SHOW VARIABLES LIKE "max_connections"; SHOW VARIABLES LIKE "wait_timeout"; SET G ...
- window.location.hashs属性介绍
长话短说. location是javascript里边管理地址栏的内置对象.比方location.href就管理页面的url,用location.href=url就能够直接将页面重定向url. 而lo ...