博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj 1010: [HNOI2008]玩具装箱toy
阅读量:7034 次
发布时间:2019-06-28

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

1 #include
2 #include
3 #define M 50005 4 using namespace std; 5 long long sum[M],f[M],n,L,q[M],h,t,C; 6 double gg(int x,int y) 7 { 8 return(f[y]-f[x]+(sum[y]+C)*(sum[y]+C)-(sum[x]+C)*(sum[x]+C))/(2.0*(sum[y]-sum[x])); 9 }10 int main()11 {12 scanf("%d%d",&n,&L);13 C=L+1;14 for(int i=1;i<=n;i++)15 {16 int a1;17 scanf("%d",&a1);18 sum[i]=sum[i-1]+a1;19 }20 for(int i=1;i<=n;i++)21 sum[i]+=i;22 h=1;23 t=1;24 q[1]=0;25 for(int i=1;i<=n;i++)26 {27 for(;h

这是个斜率优化dp,f[i]=f[j]+(sum[i]-sum[j]+i-j+1-L)^2;

sum数组为前缀和,让sum[i]+=i;C=L-1;

所以f[i]=f[j]+(sum[i]-sum[j]-C)^2;

如果从f[j]转移比从f[k]转移优

即 f[j]+(sum[i]-sum[j]-C)^2<f[k]+(sum[i]-sum[k]-C)^2

化简得  (f[j]-f[k]+(sum[j]+C)*(sum[j]+C)-(sum[k]+C)*(sum[k]+C))/(2*(sum[j]-sum[k]))<sum[i]

这样斜率优化就出去了。

转载于:https://www.cnblogs.com/xydddd/p/5224013.html

你可能感兴趣的文章
安装xtables-addons时报错
查看>>
.NET开发规范教程
查看>>
网络公开课《最后的升级-Oracle RAC数据库升级》
查看>>
配置FTP服务
查看>>
我的友情链接
查看>>
人类认识的层次模型
查看>>
WDS使用捕获映像制作企业自定义映像
查看>>
C++数组、指针与vector、iterator
查看>>
python将日志导入数据库代码案例2
查看>>
How to install VNC server on CentOS 6
查看>>
windows下SVN版本库迁移小结
查看>>
linux VNC 安装及配置
查看>>
编写一个UNIX文件系统
查看>>
textView跳转的activity
查看>>
PHP版本VC6和VC9、Non Thread Safe和Thread Safe的区别
查看>>
我的友情链接
查看>>
fix [Errno 13] Permission denied: '/var/log/glance/api.log'
查看>>
Cacti 0.8.8b 插件(monitor thold setting realtime)安装及邮件 短信告警
查看>>
我的友情链接
查看>>
很好的一个文字工具网址
查看>>