【bzoj1911】 Apio2010—特别行动队

http://www.lydsy.com/JudgeOnline/problem.php?id=1911 (题目链接)

题意

  给出一个序列,将序列分成连续的几段,每段的价值为a*s*s+b*s+c,其中a,b,c为给定常数,s为这一段中所有数之和。求最大价值和。

Solution

  斜率优化。

  dp方程:$${f[i]=max(f[j]+a*(s[i]-s[j])^2+b*(s[i]-s[j])+c)}$$

  其中${s[i]}$为前缀和,${f[i]}$表示从1~i的最大价值。

  斜率式:$${s[i]*(2*a*s[j])+f[i]=(f[j]-b*s[j]+a*s[j]^2)+a*s[i]^2+b*s[i]+c}$$

  所以决策${j}$映射到平面直角坐标系上就是:${(2*a*s[j],f[j]-b*s[j]+a*s[j]^2)}$。斜率:${s[i]}$为正且单增;横坐标${2*a*s[j]}$单减(${a}$小于0,${s[j]}$单增),所以单调队列里面的点长成这样:

 

细节

  开long long。

代码

// bzoj1911
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
#define LL long long
#define inf 1e18
#define Pi acos(-1.0)
#define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);
using namespace std;const int maxn=1000010;
LL f[maxn],s[maxn],a,b,c;
int n,q[maxn];double slope(int i,int j) {return (double)((f[i]-b*s[i]+a*s[i]*s[i])-(f[j]-b*s[j]+a*s[j]*s[j]))/(double)((2*a*s[i])-(2*a*s[j]));
}
int main() {scanf("%d",&n);scanf("%lld%lld%lld",&a,&b,&c);for (int i=1;i<=n;i++) scanf("%lld",&s[i]),s[i]+=s[i-1];int l=1,r=1;q[1]=0;for (int i=1;i<=n;i++) {while (l<r && slope(q[l],q[l+1])<=s[i]) l++;f[i]=f[q[l]]+a*(s[i]-s[q[l]])*(s[i]-s[q[l]])+b*(s[i]-s[q[l]])+c;while (l<r && slope(q[r-1],q[r])>slope(q[r],i)) r--;q[++r]=i;}printf("%lld",f[n]);return 0;
}

  

转载于:https://www.cnblogs.com/MashiroSky/p/6013532.html

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

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

相关文章

python中的所有功能_python – 是否可以列出模块中的所有功能?

参见英文答案 >listing all functions in a python module 12个答案 我以这种格式定义了一个.py文件&#xff1a;foo.pydef foo1(): passdef foo2(): passdef foo3(): pass我从另一个文件导入它&#xff1a;…

网络知识:七类网线相关知识介绍

目录 一、什么是七类网线&#xff1f; 二、7类线与超6类线的区别 三、7类线用什么水晶头&#xff1f;如何制作水晶头&#xff1f; 四、七类网线的应用场景 今天给大家介绍一下七类网线相关的知识&#xff0c;希望对大家能有所帮助&#xff01; 一、什么是七类网线&#xff1f; …

Swift3.0语言教程获取C字符串

Swift3.0语言教程获取C字符串 Swift3.0语言教程获取C字符串&#xff0c;为了让Swift和C语言可以实现很好的交互&#xff0c;开发者可以使用NSString的cString(using:)方法在指定编码格式后&#xff0c;获取C字符串&#xff0c;其语法形式如下&#xff1a; func cString(using: …

rdf mysql持久化l_Jena 利用数据库保存,持久化本体

1 Jena的数据库接口Jena提供了将RDF数据存入关系数据库的接口&#xff0c;Model、Resource、Query等接口可以用于访问和维护数据库里的RDF数据。在处理数据时&#xff0c;应用程序不必直接操作数据(而是通过Jena的API)&#xff0c;也不必知道数据库的模式。Jena提供了支持MySQL…

效率工具:分享7款实用的任务管理软件,值得收藏!

今天小编给大家分享10款实用的任务管理工具&#xff0c;欢迎推荐给身边的朋友&#xff0c;选择一款适合自己的利器吧。1.Microsoft To-Do 微软推出的一款效率管理神器Microsoft To-Do微软推出的有款简介并且实用的待办列表效率软件&#xff0c;实用它可以轻松规划您的每一天。无…

洛谷 2921 记忆化搜索 tarjan 基环外向树

洛谷 2921 记忆化搜索 tarjan 传送门 (https://www.luogu.org/problem/show?pid2921) 做这题的经历有点玄学&#xff0c;&#xff0c;起因是某个random题的同学突然发现了一个0提交0通过的题目&#xff0c;然后就引发了整个机房的兴趣&#xff0c;&#xff0c;然后&#xff0c…

单片机位寻址举例_单片机学习:51单片机寻址方式详解

51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel 8031单片机&#xff0c;后来随着Flash rom 技术的发展&#xff0c;8031单片机取得了长足的发展&#xff0c;成为了应用最广泛的8位单片机之一。51单片机是基础入门的一个单片机&#xff0c;并…

网络知识:LAN、WAN、WLAN相关知识介绍

今天给大家介绍一下LAN、WAN、WLAN相关知识&#xff0c;希望对大家能有所帮助&#xff01; 一、什么是lan、wan和wlan口的区别&#xff1f; 很多朋友对lan口与wan及wlan的用途了解不清楚&#xff0c;尤其是在做路由器桥接时&#xff0c;wan口与lan的连接与设置容易弄混。 1、LA…

jps

jps位于jdk的bin目录下&#xff0c;其作用是显示当前系统的java进程情况&#xff0c;及其id号。 jps相当于Solaris进程工具ps。不象”pgrep java”或”ps -ef grep java”&#xff0c;jps并不使用应用程序名来查找JVM实例。因此&#xff0c;它查找所有的Java应用程序&#xff0…

SQL

修改表的列名&#xff1a; exec sp_rename testtable.id,ID,column 根据传入时间删除同一天的记录 1、 delete InventoryMovementsTemp where DateDiff(DD,TrnDate ,1/11/2013)0 2、 where convert(varchar(10),TrnDate,126)’’213-01-10 2、 where trndate>’2013-01-10’…

后端技术:mybatis中resultMap用法示例笔记

1、概念resultMap属于mybatis返回操作结果的一个标签&#xff0c;可以用来映射select查询出来结果的集合&#xff0c;主要作用是将实体类中的字段与数据库表中的字段进行关联映射。并且支持复杂的返回结果类型。2、使用场景2.1 属性映射当数据库字段和项目中的实体属性不一致时…

将mysql服务移除_怎么将mysql服务移除?

将mysql服务移除的方法&#xff1a;1、进入“控制面板->程序->卸载或更改程序”&#xff0c;删除mysql程序&#xff1b;2、删除MySQL文件夹下的【my.ini】文件&#xff0c;如果备份好&#xff0c;可以直接将文件夹全部删除 &#xff1b;3、进入注册表&#xff0c;将相关M…

程序人生:程序员的9个层次,你属于哪个层次

目录 第一级&#xff1a;糟糕的程序员 第二级&#xff1a;菜鸟级程序员 第三级&#xff1a;码农 第四级&#xff1a;普通程序员 第五级&#xff1a;中级程序员 第六级&#xff1a;骨干程序员 第八级&#xff1a;著名程序员 第九级&#xff1a;祖师爷级别 . 第一级&#xff1a;糟…

lsof -i:port 的作用

lsof&#xff08;list open files&#xff09;是一个列出当前系统打开文件的工具。在linux环境下&#xff0c;任何事物都以文件的形式存在&#xff0c;通过文件不仅仅可以访问常规数据&#xff0c;还可以访问网络连接和硬件。如TC和UDP等&#xff0c;系统在后台都为该应用程序分…

SpringBoot定时任务实现的两种方式介绍

今天给大家介绍SpringBoot定时任务实现的几种方式&#xff0c;希望对大家能有所帮助&#xff01;1、SpringTask 用法框架介绍&#xff1a;SpringTask是Spring自带的轻量级定时任务工具&#xff0c;相比于Quartz使用更加简单方便&#xff0c;并且不需要不需要引入其他依赖即可使…

mvc调用mysql存储过程_使用.NET MVC +EF调用oracle的存储过程

题记&#xff1a;需求如题&#xff0c;在网上搜索了一下&#xff0c;没有特别贴合我需求的资料&#xff0c;只好自己摸索&#xff0c;东拼西凑了解了一点东西慢慢尝试做了出来。难点&#xff1a;.NET是微软产品&#xff0c;主要支持Sql Server数据库&#xff0c;对于Oracle的数…

Oracle12c:安装后新建用户及其默认表空间,并创建表测试

环境&#xff1a;操作系统&#xff1a;Windows Server2008 R2 X64 Oracle版本&#xff1a;12c 如何安装&#xff1f; -- oracle 12c在oracle linux 6.6 x64上的安装 -- Windows x64位下完美安装winx64_oracle_12c_database 如何使用DataBase Cofiguration Assistant 创建数据库…

数据库:Redis相关知识梳理

1、数据类型string&#xff08;字符串&#xff09;&#xff1a;最基本的k-v存储 &#xff0c;适合验证码、配置信息等list&#xff08;列表&#xff09;&#xff1a;适合有序/固定的列表。比如行政区、字典表、消息队列等。set&#xff08;集合&#xff09;&#xff1a;支持交集…

python线性回归分析看相关性_机器学习入门-相关分析之简单线性回归

一.什么是机器学习&#xff1f;简单来说&#xff0c;机器学习是一类算法的总称&#xff0c;这些算法企图从大量历史数据中挖掘出其中隐含的规律&#xff0c;并用于预测或者分类&#xff0c;更具体的说&#xff0c;机器学习可以看作是寻找一个函数&#xff0c;输入是样本数据&am…

Android Listview 性能优化

首先我一般使用的适配器是BaseAdapter,其中有两个方法最主要,分别是: getCount,getView,在对Listview 进行优化的时候,首先使用 convertview 和viewHolder 配合进行优化,使用convertview的母的是控件复用,从而加到减少内存的使用,使用viewHolder 的是减少findbyid 的次数.但是在…