【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.pswp.cn/news/270611.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/270611.shtml
英文地址,請注明出處:http://en.pswp.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 的次數.但是在…