[BZOJ1010][HNOI2008]玩具装箱toy
2015-07-20 23:10
344 查看
原题地址
第一题斜率优化DP,代码较搓OLZ…
AC code:
第一题斜率优化DP,代码较搓OLZ…
AC code:
#include <cstdio> typedef long long ll; const int N=100010; ll n,l; ll c ,s ,f ; struct Vec{ ll x,y; Vec() {} Vec(ll x,ll y):x(x),y(y) {} friend Vec operator-(Vec A,Vec B){ return Vec(A.x-B.x,A.y-B.y); } friend ll operator*(Vec A,Vec B){ return A.x*B.y-A.y*B.x; } }; struct Graham{ ll he,ta; Vec q ; void push(Vec A){ while(ta-he&&(q[ta]-q[ta-1])*(A-q[ta])>=0) ta--; q[++ta]=A; } }Q; void read(){ scanf("%lld%lld",&n,&l); for(ll i=1;i<=n;i++){ scanf("%lld",&c[i]); s[i]=s[i-1]+c[i]; } } void work(){ Q.he=Q.ta=1;Q.q[1]=Vec(0,0); ll pt=1; for(ll i=1;i<=n;i++){ ll k=i+s[i]-l-1; Vec v1,v2,u; while(1){ if(pt==Q.ta) break; v1=Q.q[pt];v2=Q.q[pt+1]; if(v1.y+2*k*v1.x<v2.y+2*k*v2.x) break; pt++; } u=Q.q[pt]; f[i]=u.y+2*k*u.x+k*k; Q.push(Vec(-i-s[i],f[i]+(i+s[i])*(i+s[i]))); } printf("%lld\n",f ); } int main(){ read(); work(); return 0; }
相关文章推荐
- Node.js(五)- 迅速node api
- onTouch事件机制
- 鉴于Eclipse下在线安装Pydev插件所遇见的问题,及其替代的离线安装的方法
- python类型比较的3种方式
- 直接插入排序
- QWidget属性,函数的学习
- [BZOJ1562][NOI2009]变换序列
- 进程内存
- 上海麻辣马资深程序员叶劲峰:我的游戏人生
- S3C2440时钟和电源管理
- Python filter()函数的用法
- CMSIS的简介
- AUTOMAKE 教程,
- Android中利用java反射机制Reflect
- 第一百零九天 how can I 坚持
- 数据库查询优化(转载)
- LINUX使用DVD光盘或者ISO作为本地YUM源
- 全自动化的 Android 编译管线
- Android数据库批量操作的性能优化
- 任笑萱 2015/7/16 个人文档