[BZOJ1010][HNOI2008]玩具装箱toy(斜率优化dp)
来源:互联网 发布:java实现排序算法 编辑:程序博客网 时间:2024/04/28 18:56
题目描述
传送门
题解
题目描述认真读
转移方程:
刚开始上来就化然后发现不可做。
考虑换元 令
则
然后展开
明显可以用斜率优化。
这道题启示我们:一定要把ij相关的放在一起!
代码
#include<iostream>#include<cstring>#include<cstdio>using namespace std;#define LL long longconst int max_n=5e4+5;LL n,L,x;LL s[max_n],p[max_n];LL q[max_n],head,tail;LL f[max_n];inline LL K(LL j){return -2*p[j];}inline LL B(LL j){return f[j]+p[j]*p[j]+2*L*p[j];}inline LL Y(LL i,LL j){return K(j)*p[i]+B(j);}inline bool cmp(LL x1,LL x2,LL x3){ LL w1=(K(x1)-K(x3))*(B(x2)-B(x1)); LL w2=(K(x1)-K(x2))*(B(x3)-B(x1)); return w1>=w2;}int main(){ scanf("%lld%lld",&n,&L); for (LL i=1;i<=n;++i) scanf("%lld",&x),s[i]=s[i-1]+x,p[i]=s[i]+i; L++; head=tail=0; for (LL i=1;i<=n;++i){ while (head<tail&&Y(i,q[head])>=Y(i,q[head+1])) head++; f[i]=Y(i,q[head])+p[i]*p[i]-2*L*p[i]+L*L; while (head<tail&&cmp(i,q[tail-1],q[tail])) tail--; q[++tail]=i; } printf("%lld\n",f[n]);}
总结
强转注意中间爆int
0 0
- BZOJ1010 [HNOI2008]玩具装箱toy(斜率优化dp)
- [BZOJ1010][HNOI2008]玩具装箱toy(斜率优化dp)
- 【BZOJ1010】【HNOI2008】玩具装箱toy(dp+斜率优化)
- bzoj1010 [HNOI2008]玩具装箱toy(斜率优化DP)
- bzoj1010: [HNOI2008]玩具装箱toy 斜率优化DP
- 【DP+斜率优化】[HNOI2008][HYSBZ/BZOJ1010]玩具装箱toy
- 【bzoj1010】[HNOI2008]玩具装箱toy 斜率优化DP
- 斜率优化dp专题 & BZOJ1010 HNOI2008 玩具装箱toy
- BZOJ1010: [HNOI2008]玩具装箱toy 斜率优化DP
- [bzoj1010][HNOI2008] 玩具装箱toy DP斜率优化
- 【斜率优化DP】BZOJ1010 [HNOI2008]玩具装箱toy
- bzoj1010 [HNOI2008]玩具装箱toy 斜率优化 DP
- bzoj1010[HNOI2008]玩具装箱toy 斜率优化dp
- BZOJ1010(HNOI2008)[玩具装箱toy]--斜率优化DP
- 【bzoj1010】【斜率优化】【HNOI2008】玩具装箱toy
- [HNOI2008][BZOJ1010] 玩具装箱toy - 斜率优化
- 【bzoj1010】【HNOI2008】【玩具装箱toy】【斜率优化】
- [BZOJ1010][HNOI2008]玩具装箱toy-斜率优化
- java基础
- 软件测试兼职
- WEB站点请求耗时分析-基于MongoDB的日志分析系统
- 第九周项目2-我的数组类
- 有状态会话bean和无状态会话bean
- [BZOJ1010][HNOI2008]玩具装箱toy(斜率优化dp)
- 稳压二极管的使用
- 《Android JNI》02 对java传进来的整形参数进行操作并返回
- vi全局替换方法
- Echarts 2.0之抽象封装
- STL 寻找大富翁
- RxJava 详解
- S3C2440之定时器
- 五谷杂陈