博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【HNOI2008】玩具装箱
阅读量:4507 次
发布时间:2019-06-08

本文共 1766 字,大约阅读时间需要 5 分钟。

\(S_i=\sum_{i=1}^n C_i\)

易得\(n^2\)方程

\(f[i]\)为处理前\(i\)个玩具的最小费用

\(f_i=min(f_j+(i-j+s_i-s_j-L)^2)(j<i)\)

\(f_i=f_j+(i-j+s_i-s_j-L-1)^2\)

\(a_i=s_i+i,b_j=-s_j-j-L-1\)

\(f_i=f_j+a_i^2+2a_ib_j+b_j^2\)

\(i\),\(j\)相关的放到一起

\(f_i-a_i^2-2a_ib_j=f_j+b_j^2\)

\(b_j=x,f_j+b_j^2=y,f_i-a_i^2=b\)

则变为一条直线\(-2a_ix+b=y\)

我们实际上要找的答案\(f_i\)就是最小化一个斜率为\(-2a_i\)的直线过点\((x,y)\)\(y\)轴上的截距\(b\)加上定值\(a_i^2\)

因为\(-2a_i\)递减,用单调队列维护一个上凸包就可以了。

/*@Date    : 2019-07-31 10:46:24@Author  : Adscn (adscn@qq.com)@Link    : https://www.cnblogs.com/LLCSBlog*/#include
using namespace std;#define IL inline#define RG register#define gi getint()#define gc getchar()#define File(a) freopen(a".in","r",stdin);freopen(a".out","w",stdout)IL int getint(){ RG int xi=0; RG char ch=gc; bool f=0; while(ch<'0'||ch>'9')ch=='-'?f=1:f,ch=gc; while(ch>='0'&&ch<='9')xi=(xi<<1)+(xi<<3)+ch-48,ch=gc; return f?-xi:xi;}template
IL void pi(T k,char ch=0){ if(k<0)k=-k,putchar('-'); if(k>=10)pi(k/10,0); putchar(k%10+'0'); if(ch)putchar(ch);}#define int long longconst int N=1e6;int s[N];int f[N];int n,L;inline int A(int i){return s[i]+i;}inline int B(int i){return -s[i]-i-L-1;}inline int sqr(int i){return i*i;}inline double slope(int i,int j){return (double)(f[i]+sqr(B(i))-f[j]-sqr(B(j)))/(B(i)-B(j));}signed main(void){ n=gi,L=gi; for(int i=1;i<=n;++i)s[i]=s[i-1]+gi; static int Q[N*2]; int l=0,r=-1; Q[++r]=0; for(int i=1;i<=n;++i) { while(l
=-2*A(i))++l; f[i]=f[Q[l]]+sqr(A(i)+B(Q[l])); // assert(slope(1,2)==slope(2,1)); while(l
<=slope(Q[r-1],i))--r; Q[++r]=i; } cout<
<

转载于:https://www.cnblogs.com/LLCSBlog/p/11275597.html

你可能感兴趣的文章
377. Combination Sum IV
查看>>
416. Partition Equal Subset Sum
查看>>
C#使用反射得到属性然后创建xml文档
查看>>
Java重试机制
查看>>
u盘超级加密3000使用方法
查看>>
初识CoreText
查看>>
ADO.NET Entities Framework 的增删查改
查看>>
nlogn数据结构代码
查看>>
ORA-12519: TNS:no appropriate service handler found 解决
查看>>
css解决td单元格内文字溢出
查看>>
特斯拉的疯狂
查看>>
堆排序
查看>>
【译】3 ways to define a JavaScript class
查看>>
vim 基础学习之替换
查看>>
C#中三层架构UI、BLL、DAL、Model实际操作
查看>>
android:图片的缩放属性 scaleType
查看>>
[詹兴致矩阵论习题参考解答]习题1.8
查看>>
中国科学院大学2011年数学分析高等代数考研试题
查看>>
二.SQL入门及DDL语言实例
查看>>
B - School Marks
查看>>