【bzoj1010-toy】斜率优化入门模板

dsy1010: [HNOI2008]玩具装箱

【题目描述】

n个数,分成连续的若干段,每段(假设从第j个到第i个组成一段)的分数为 (X-L)^2Xj-i+Sigma(Ck) i<=k<=j,其中L是一个常量。目标:各段分数的总和最小。

【输入格式】

第一行:两个整数NL.下来N个数字Ci.1<=N<=50000,1<=L,Ci<=10^7

【输出格式】

一个整数,各段分数总和的值最小。

Sample Input

5 4

3 4 2 1 4

Sample Output

1

 

维护一个右下凸包。

 

 1 #include<cstdio>
 2 #include<cstdlib>
 3 #include<cstring>
 4 #include<cmath>
 5 #include<iostream>
 6 #include<algorithm>
 7 #include<queue>
 8 using namespace std;
 9 
10 typedef long long LL;
11 const LL N=50010;
12 LL n,L,NL,f[N],sum[N],s[N],Q[N];
13 
14 // f[i]=a[i]*x[j]+b[j]
15 // LL=L+1
16 // a[i]=-2*(s[i]-LL)
17 // x[j]=s[j]
18 // b[j]=f[j]+s[j]^2
19 
20 double X(LL i){return s[i];}
21 double Y(LL i){return f[i]+s[i]*s[i];}
22 double find_k(LL i,LL j){return (Y(j)-Y(i))/(X(j)-X(i));}
23 
24 int main()
25 {
26     // freopen("a.in","r",stdin);
27     freopen("toy.in","r",stdin);
28     freopen("toy.out","w",stdout);
29     scanf("%lld%lld",&n,&L);
30     sum[0]=0;s[0]=0;NL=L+1;
31     for(int i=1;i<=n;i++)
32     {
33         LL x;
34         scanf("%lld",&x);
35         sum[i]=sum[i-1]+x;
36     }
37     for(int i=1;i<=n;i++) s[i]=sum[i]+i;
38     // for(LL i=1;i<=n;i++) printf("%d ",sum[i]);printf("\n");
39     // for(LL i=1;i<=n;i++) printf("%d ",s[i]);printf("\n");
40     LL l=0,r=0,j,ai,xj,bj,ti;
41     double k;
42     memset(f,0,sizeof(f));
43     for(int i=1;i<=n;i++)
44     {
45         ai=(-2)*(s[i]-NL);
46         while(l<r && find_k(Q[l],Q[l+1])<=(-ai) ) l++;
47         j=Q[l];
48         xj=s[j];
49         bj=f[j]+s[j]*s[j];
50         ti=(s[i]-NL)*(s[i]-NL);
51         f[i]=ai*xj+bj+ti;
52         while(l<r && find_k(Q[r],Q[r-1])>find_k(i,Q[r])) r--;
53         Q[++r]=i;
54     }
55     printf("%lld\n",f[n]);
56     return 0;
57 }

 

转载于:https://www.cnblogs.com/KonjakJuruo/p/5890581.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/457241.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

itellyou操作系统,office等软件的很全的下载站

itellyou操作系统&#xff0c;office等软件的很全的下载站http://www.itellyou.cn/转载于:https://blog.51cto.com/wangheyu1/1894724

矩阵的马鞍点

#include<stdio.h>#define n 4//马鞍点是第I行值最小第J列值最大 void maxmin(int a[n][n]){ int i,j ,flag; int max[n],min[n]; for(i0;i<n;i) { min[i]a[i][0];//将数组每行的第一个元素赋值给min[]数组 for(j1;j<n;j) { if(a[i][j]<min[i]) min[i]a[i][j];…

Linux运维工程师面试-部分题库

一、Linux操作系统知识 1.常见的Linux发行版本都有什么&#xff1f;你最擅长哪一个&#xff1f;它的官网网站是什么&#xff1f;说明你擅长哪一块&#xff1f; 2.Linux开机启动流程详细步骤是什么&#xff1f;系统安装完&#xff0c;忘记密码如何破解&#xff1f; 3.企业中Linu…

java统计系统线程数_Java并发(八)计算线程池最佳线程数

目录一、理论分析二、实际应用为了加快程序处理速度&#xff0c;我们会将问题分解成若干个并发执行的任务。并且创建线程池&#xff0c;将任务委派给线程池中的线程&#xff0c;以便使它们可以并发地执行。在高并发的情况下采用线程池&#xff0c;可以有效降低线程创建释放的时…

php大小写转换函数

1.将字符串转换成小写 strtolower(): 该函数将传入的字符串参数所有的字符都转换成小写,并以小定形式放回这个字 符串.例: <?php$str "I want To FLY";$str strtolower($str);echo $str; ?>输出结果: i want to fly 2.将字符转成大写 strtoupper(): 该…

关于移动端 1px 像素问题

移动端1px变粗的原因 移动端html的header总会有一句<meta name"viewport" content"widthdevice-width, initial-scale1.0, maximum-scale1.0, user-scalableno">这句话定义了本页面的viewport的宽度为设备宽度,初始缩放值和最大缩放值都为1,并禁止了…

java框架概念_java概念(2)

java概念(2)重载和重写重载&#xff1a;同一个类中&#xff0c;方法名相同&#xff0c;参数不同重写&#xff1a;父子类中&#xff0c;子类重新定义父类的方法多态​ 多态&#xff1a;同一种行为&#xff0c;不同的对象有不同的表现形式。​ 重载 编译时根据参数决定调用的方法…

CentOS(八)--crontab命令的使用方法

crontab命令常见于Unix和Linux的操作系统之中&#xff0c;用于设置周期性被执行的指令。该命令从标准输入设备读取指令&#xff0c;并将其存放于"crontab"文件中&#xff0c;以供之后读取和执行。 在Linux系统中&#xff0c;Linux任务调度的工作主要分为以下两类&…

有健忘症吗?

今天兴高采烈&#xff0c;早上空气不错&#xff0c; 但是骑自行车的我&#xff0c;还是得戴一个面罩。 半个小时后买了早餐&#xff0c; 一份炒粉、一豆浆&#xff0c;今天早上豆浆没有掉地上&#xff0c; 但是~~~~~~~~~~~~~~shit~~!~!~,居然忘记带要换的衣服了&#xff0c; …

下载java后缀的文件闪退_关于jarfile 打开闪退问题

后面才发现&#xff0c;原来是因为我把文件拖入了新建的文件夹&#xff0c;改变了路径&#xff0c;而且我的java环境没有配置好是全局变量&#xff0c;所以新建文件夹之后&#xff0c;就会出现找不到了路径&#xff0c;闪退的问题&#xff0c;&#xff0c;&#xff0c;还有就是…

心理学资源整理

http://blog.sina.com.cn/s/articlelist_1227187337_0_1.html 功夫 转载2016-06-07 15:53:55中华大地的武学&#xff0c;奥妙精深。但从大的方面来说&#xff0c;可分为内外软硬&#xff0c;有形无形的区别。注重于外&#xff0c;修炼筋骨皮肉的是有形的功夫&#xff1b;注重于…

[已解决]Vistual Stdio 2015 installer Bootstrapper Packages 路径

VS2015 installer 的预装包的地址变更成 C:\Program Files (x86)\Microsoft Visual Studio 14.0\SDK\Bootstrapper\Packages 参看文档&#xff1a;https://msdn.microsoft.com/en-us/library/ms165429(vvs.140).aspx 之前的版本是在 C:\Program Files (x86)\Microsoft SDKs\Win…

java怎样写入五个人的成绩_用java输入5个学员姓名和分数,显示分数最高的学员姓名和分数?...

展开全部import java.util.Scanner;public class Student {private String stuname "";private float stuscore 0;public String getStuname() {e69da5e6ba9062616964757a686964616f31333335316633return stuname;}public void setStuname(String stuname) {this.s…

eBay宣布发布全新的购买和销售APIs

eBay最近宣布发布两款全新的购买和销售APIs。这些APIs旨在促进eBay产品在第三方应用程序中的更好集成。eBay于10月19日在他们的博客上发表了几篇文章&#xff0c;不仅详细介绍了这些全新的购买和销售APIs提供的功能&#xff0c;而且还详细地总结了他们公司从SOAP&#xff08;简…

iOS 10 升级后无法真机测试 Could not find Developer Disk Image

&#xff0d;&#xff0d;&#xff0d;2016年9月20日更新 iOS 升级到10之后&#xff0c;你会发现无法进行真机测试了。这种情况我在iOS 8.4 、9.3更新的时候也遇到过。原因是Xcode 的DeviceSupport里面缺少了iOS 10的SDK。所以你可以选择将Xcode更新到最新版本就可以了&#xf…

java虚拟机参数优化_JAVA虚拟机JVM参数优化(2):垃圾收集算法选择

JAVA虚拟机JVM优化重要性&#xff0c;昨天JAVA虚拟机JVM参数优化(1)文章中已经描述&#xff0c;今天我们来讨论JAVA虚拟机在不同性能要求下如何选择三种垃圾收集算法。JVM内部结构如下图所示&#xff1a;串行收集用于单个线程执行垃圾收集的情况&#xff0c;在这种情况下相对它…

Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)

2019独角兽企业重金招聘Python工程师标准>>> 互联网的发展&#xff0c;网站应用的规模不断扩大&#xff0c;常规的垂直应用架构已无法应对&#xff0c;分布式服务架构以及流动计算架构势在必行&#xff0c;Dubbo是一个分布式服务框架&#xff0c;在这种情况下诞生的…

java clicked_关于java:JComponents在调用mouseClicked()之后消失

我正在用Swing编写Java GUI程序。该界面如下所示&#xff1a;当用户单击右侧的图片之一时&#xff0c;我希望它的一个小的预览显示在左上角的橙色区域中。我通过SwingWorker线程从计算机上的目录中提取所有图像文件。在SwingWorker的done()方法中&#xff0c;我向每个对象添加了…

vim简单命令教程-firstblood

你想以最快的速度学习人类史上最好的文本编辑器VIM吗&#xff1f;你先得懂得如何在VIM幸存下来&#xff0c;然后一点一点地学习各种戏法。 Vim the Six Billion Dollar editor Better, Stronger, Faster. 学习 vim 并且其会成为你最后一个使用的文本编辑器。没有比这个更好的文…

第三课、Qt的诞生和本质------------------狄泰软件学院

一、GUI用户界面元素 &#xff08;1&#xff09;、GUI应用程序是由固定的窗口元素所构成 &#xff08;2&#xff09;、操作系统提供了创建用户界面元素所需要的函数 &#xff08;3&#xff09;、各自功能不同的函数依次调用&#xff0c;从而创建出界面元素 &#xff08;4&#…