BZOJ 3156 防御准备
也是斜率优化。。。。推下式子就好了。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 1000050
using namespace std;
long long n,a[maxn],g[maxn],q[maxn],l,r,f[maxn];
long long read()
{
char ch;long long data=;
while (ch<'' || ch>'') ch=getchar();
while (ch>='' && ch<='')
{
data=data*+ch-'';
ch=getchar();
}
return data;
}
double k(long long x,long long y)
{
return (double)(g[x]-g[y])/(x-y);
}
void dp()
{
f[]=a[];l=r=;q[l]=;g[]=a[];
for (long long i=;i<=n;i++)
{
while ((r-l) && (k(q[l],q[l+])<=i)) l++;
g[i]=f[i-]+a[i]+i*(i-)/;
while ((r-l) && (k(q[r-],q[r])>k(q[r],i))) r--;
q[++r]=i;
f[i]=f[q[l]-]+a[q[l]]+(i-q[l])*(i-q[l]+)/;
}
}
int main()
{
n=read();
for (long long i=n;i>=;i--) a[i]=read();
dp();
printf("%lld\n",f[n]);
return ;
}
BZOJ 3156 防御准备的更多相关文章
- BZOJ 3156: 防御准备 斜率优化DP
3156: 防御准备 Description Input 第一行为一个整数N表示战线的总长度. 第二行N个整数,第i个整数表示在位置i放置守卫塔的花费Ai. Output 共一个整数,表示最小的战 ...
- bzoj 3156 防御准备(斜率DP)
3156: 防御准备 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 837 Solved: 395[Submit][Status][Discuss] ...
- BZOJ 3156: 防御准备( dp + 斜率优化 )
dp(i)表示处理完[i,n]且i是放守卫塔的最小费用. dp(i) = min{dp(j) + (j-i)(j-i-1)/2}+costi(i<j≤N) 然后斜率优化 ------------ ...
- bzoj 3156: 防御准备【斜率优化dp】
就是套路咯,设s[i]为1+2+...i 首先列出dp方程\( f[i]=min(f[j]+a[i]+(i-j)*i-(s[i]-s[j])) \) 然后推一推 \[ f[i]=f[j]+a[i]+( ...
- 【BZOJ 3156】防御准备
[链接] 链接 [题意] 在这里输入题意 [题解] 把a倒过来 设f[i]表示在i放一个防御塔的最小花费; 我们如果从j转移过来 就表示j+1..i-1这一段放人偶. s[i] = 1 + 2 + . ...
- DP的优化总结
一.预备知识 \(tD/eD\) 问题:状态 t 维,决策 e 维.时间复杂度\(O(n^{e+t})\). 四边形不等式: 称代价函数 w 满足凸四边形不等式,当:\(w(a,c)+w(b,d)\l ...
- 【BZOJ】【3156】防御准备
DP/斜率优化 斜率优化的裸题…… sigh……又把$10^6$当成10W了……RE了N发 这题还是很水的 当然逆序也能做……不过还是整个反过来比较顺手 反转后的a[0]=反转前的a[n],以此类推直 ...
- 【BZOJ-3156】防御准备 DP + 斜率优化
3156: 防御准备 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 951 Solved: 446[Submit][Status][Discuss] ...
- BZOJ3156: 防御准备
3156: 防御准备 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 442 Solved: 210[Submit][Status] Descript ...
随机推荐
- PE文件学习系列二 DOS头分析
合肥程序员群:49313181. 合肥实名程序员群 :128131462 (不愿透露姓名和信息者勿加入)Q Q:408365330 E-Mail:egojit@qq.com PE文件结 ...
- sql语句判断默认值为getdate()的约束是否存在
TFlowCreateTask--表名 AddDate--字段名 if not exists( select d.name from syscolumns a join sysobjects b on ...
- 关于链接到QQ客服的问题,原来只需要在a标签上加一串话而已呐~~~~
<a class="btn" target=blank href=tencent://message/?uin=&Site=www.woyouli.com&M ...
- P53 T2
为方便储户,某银行拟开发计算机储蓄系统.储户填写的存款单或取款单由业务员输入系统,如果是存款,系统记录存款人姓名.住址.存款类型.存款日期.利率等信息,并印出存款单给储户:如果是取款,系统计算利息并印 ...
- algorithm -- 基本介绍
为学习算法和使用.实践 GIT & GitHub ,而写此系列. 我使用的编译器是 visual studio community 2015 低版本的VS打不开GitHub中的解决方案,拷贝代 ...
- Myeclipse安装SVN插件(转)
方法一:在线安装 1.打开HELP->MyEclipse Configuration Center.切换到SoftWare标签页. 2.点击Add Site 打开对话框,在对话框Name输入Sv ...
- XP 安装不了framework 4.0 的解决方法
第一步: 如果是XP系统: 1.开始——运行——输入cmd——回车——在打开的窗口中输入net stop WuAuServ 2.开始——运行——输入%windir% 3.在打开的窗口中有个文件夹叫So ...
- Mybatis使用generator自动生成映射配置文件信息
使用mybatis配置映射文件比较的麻烦,但是有自动生成jar工具,方便加速开发速度,下面主要是该工具的使用以及相关的配置. 1.下载相关的资源 我们需要下载mybatis-generator-co ...
- angular js 图片轮播
搬运工: eg1: Build a Sweet AngularJS Photo Slider Pt 2 with ngTouch DEMO:http://paul-xiao.github.io/ang ...
- Calculator(1.5)
Calculator(1.5) Github链接 ps.负数的处理未完成 解题过程中遇到的困难和解决 <stack>的使用: 认真研究了栈,基本上掌握了用法,与<queue>的 ...