BZOJ1911 特別行動隊

目錄

  • BZOJ1911 特別行動隊
  • 題解
  • code

BZOJ1911 特別行動隊

題目傳送門

題解

典型的斜率優化\(Dp\)。首先如果我們記\(sum[i]\)表示前\(i\)個士兵的戰斗力之和,那么我們比較容易的可以得出\(O(n^2)\)\(Dp\)\(f[i]=max(f[j]+a*(sum[i]-sum[j])^2+b*(sum[i]-sum[j])+c)\)。如果\(k>j\)并且\(k\)\(j\)更優,那么可以得出:

\(f[j]+a*(sum[i]-sum[j])^2+b*(sum[i]-sum[j])+c<f[k]+a*(sum[i]-sum[k])^2+b*(sum[i]-sum[k])+c\)

整理之后可得:

\(\frac{f[k]-f[j]+a*(sum[k]-sum[j])^2-b*(sum[k]-sum[j])}{2*a*(sum[k]-sum[j])}\leq sum[i]\)

然后就是用單調隊列進行優化了。

code

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
bool Finish_read;
template<class T>inline void read(T &x){Finish_read=0;x=0;int f=1;char ch=getchar();while(!isdigit(ch)){if(ch=='-')f=-1;if(ch==EOF)return;ch=getchar();}while(isdigit(ch))x=x*10+ch-'0',ch=getchar();x*=f;Finish_read=1;}
template<class T>inline void print(T x){if(x/10!=0)print(x/10);putchar(x%10+'0');}
template<class T>inline void writeln(T x){if(x<0)putchar('-');x=abs(x);print(x);putchar('\n');}
template<class T>inline void write(T x){if(x<0)putchar('-');x=abs(x);print(x);}
/*================Header Template==============*/
#define PAUSE printf("Press Enter key to continue..."); fgetc(stdin);
const int maxn=2e6+500;
int n;
int a,b,c;
int x[maxn];
int l,r;
int que[maxn];
ll f[maxn],sum[maxn];
/*==================Define Area================*/
ll Sqr(ll x) {return x*x;
}double Cal(int x,int y) {return (double)(f[y]-f[x]+a*(Sqr(sum[y])-Sqr(sum[x]))-b*(sum[y]-sum[x]))/(double)(2*a*(sum[y]-sum[x]));
}int main() {read(n);read(a);read(b);read(c);for(int i=1;i<=n;i++) {read(x[i]);}for(int i=1;i<=n;i++) sum[i]=sum[i-1]+x[i];for(int i=1;i<=n;i++) {while(l<r&&Cal(que[l],que[l+1])<sum[i]) l++;int t=que[l];f[i]=f[t]+a*Sqr(sum[i]-sum[t])+b*(sum[i]-sum[t])+c;while(l<r&&Cal(que[r-1],que[r])>Cal(que[r],i)) r--;que[++r]=i;}printf("%lld\n",f[n]);return 0;
}

轉載于:https://www.cnblogs.com/Apocrypha/p/9433816.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/451015.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/451015.shtml
英文地址,請注明出處:http://en.pswp.cn/news/451015.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

硅谷創業者中被遮蔽的“中國現象”

摘要&#xff1a;他們關心互聯網和移動&#xff0c;但更關心公共設施的信息化、環境污染和氣候變暖、清潔能源的利用&#xff0c;以及農業和食物的改良。但至少目前看上去&#xff0c;他們贏得的來自硅谷的學術機構、風險投資界的認可與尊敬&#xff0c;似乎要更多。 他們關心互…

【模式識別與機器學習】——3.9勢函數法:一種確定性的非線性分類方法

目的 用勢函數的概念來確定判別函數和劃分類別界面。 基本思想 假設要劃分屬于兩種類別ω1和ω2的模式樣本&#xff0c;這些樣本可看成是分布在n維模式空間中的點xk。 把屬于ω1的點比擬為某種能源點&#xff0c;在點上&#xff0c;電位達到峰值。 隨著與該點距離的增大&a…

超詳細 - SVN下載安裝及使用教程

SVN簡介&#xff1a; 為什么要使用SVN&#xff1f; 程序員在編寫程序的過程中&#xff0c;每個程序員都會生成很多不同的版本&#xff0c;這就需要程序員有效的管理代碼&#xff0c;在需要的時候可以迅速&#xff0c;準確取出相應的版本。 Subversion是什么&#xff1f; 它是一…

TW實習日記:第16天

前端的樣式bug實在是太太太莫名其妙了&#xff0c;尤其是封裝好的組件&#xff0c;一層套一層的&#xff0c;根本不知道是哪一層出了問題...除了改bug就是做新功能&#xff0c;真想吐槽一下這個項目的留言板&#xff0c;根本沒人會用吧...這功能實在是太老舊了... 感覺每一天都…

重載與重寫(overload and override)

在java編程中經常會遇到重載和重寫&#xff0c;剛接觸java的時候對這對概念比較懵比&#xff0c;也不能理解其中的區別&#xff0c;后來在逐漸的學習中更加深刻的理解了其中的原理。哎&#xff0c;說來還是基礎知識學的不扎實&#xff0c;這些都是大學期間偷懶欠下的帳。 &…

洛谷P4114 Qtree1(樹鏈剖分+線段樹)

傳送門 LCT秒天秒地用什么樹剖 這題可以算是樹剖的比較裸的題目了 把每一條邊的權值下放到他兩邊的點中深度較深的那個 然后直接用樹剖線段樹帶進去亂搞就可以了 1 //minamoto2 #include<bits/stdc.h>3 using namespace std;4 template<class T>inline bool cmax(T…

什么是CDN ,CDN的作用

轉自&#xff1a;https://baike.baidu.com/item/CDN/420951?fraladdin 簡介 CDN是構建在網絡之上的內容分發網絡&#xff0c;依靠部署在各地的邊緣服務器&#xff0c;通過中心平臺的負載均衡、內容分發、調度等功能模塊&#xff0c;使用戶就近獲取所需內容&#xff0c;降低網…

docker 中不能用vim編輯文件

2019獨角獸企業重金招聘Python工程師標準>>> docker 中不能用vim編輯文件 2017年08月28日 16:54:29 閱讀數&#xff1a;2061 更新來源 apt-get update 1安裝vim apt-get install -y vim 轉載于:https://my.oschina.net/u/3367404/blog/1923901

使用final修飾局部變量???

在編程中我們偶爾會看到如下的代碼&#xff1a; public void foo(final int arg){final int localData 0;// ...}以及與之相似的代碼 public void foo(int arg){int localData 0;// ...}這兩段代碼的主要區別就是&#xff1a;局部變量是否使用了final關鍵字修飾。有同學可能會…

視頻編解碼概述

視頻編解碼概述 1. 常用的基本知識 基本概念 編解碼 編解碼器&#xff08;codec&#xff09;指的是一個能夠對一個信號或者一個數據流進行變換的設備或者程序。這里指的變換既包括將信號或者數據流進行編碼&#xff08;通常是為了傳輸、存儲或者加密&#xff09;或者提取得到…

洛谷 2759 奇怪的函數

【題解】 取個對數然后二分即可。對于一個數x&#xff0c;x^x的位數就是(int)(lg(x)*x1). 1 #include<cstdio>2 #include<cstring>3 #include<algorithm>4 #include<cmath>5 #define LL long long6 #define rg register7 #define N 2000108 using name…

區塊鏈技術怎么構架落地應用?

自從區塊鏈技術火爆起來之后&#xff0c;越來越多的金融機構和金融科技公司宣布探索區塊鏈在金融上的運用&#xff0c;國內區塊鏈技術服務商跟隨金融機構的腳步&#xff0c;一方面是基于以太坊智能合約作為底層架構&#xff0c;通過提供中間層工具及協議和應用層的身份驗證、證…

JVM中GC Root對象有哪些?

眾所周知&#xff0c;我們目前最常用的虛擬機hotspot使用可達性分析來進行垃圾回收&#xff0c;而可達性分析需要依賴GC Root。下面我就來介紹下可以作為GC Root的對象。 &#xff08;一&#xff09;虛擬機棧中引用的對象 虛擬機棧中的引用的對象可以作為GC Root。我們程序在虛…

IPv6 解說 ,與IPv4的同異

見&#xff1a;https://baike.baidu.com/item/IPv6/172297 IPv6 IPv6是Internet Protocol Version 6的縮寫&#xff0c;其中Internet Protocol譯為“互聯網協議”。IPv6是IETF&#xff08;互聯網工程任務組&#xff0c;Internet Engineering Task Force&#xff09;設計的用于替…

USACO Training Section 5.1 Fencing the Cows 圈奶牛(凸包)

夫約翰想要建造一個圍欄用來圍住他的奶牛&#xff0c;可是他資金匱乏。他建造的圍欄必須包括他的奶牛喜歡吃草的所有地點。對于給出的這些地點的坐標&#xff0c;計算最短的能夠圍住這些點的圍欄的長度。 輸入 輸入數據的第一行包括一個整數 N。N&#xff08;0 < N < 10,…

Linux各發行版本簡介

Linux的發行版本可以大體分為兩類&#xff0c;一類是商業公司維護的發行版本&#xff0c;一類是社區組織維護的發行版本&#xff0c;前者以著名的Redhat&#xff08;RHEL&#xff09;為代表&#xff0c;后者以Debian為代表。 1、Redhat&#xff0c;應該稱為Redhat系列&#xff…

個推應用統計產品(個數)Android集成實踐

2019獨角獸企業重金招聘Python工程師標準>>> 前段時間&#xff0c;我們公司的產品又雙叒叕給我們提了新需求&#xff0c;要求我們把APP相關的數據統計分析一下&#xff0c;這些指標包括但不限于應用每日的新增、活躍、留存率等等&#xff0c;最好每天都能提供數據報…

JVM中安全點safePoint有哪些?

安全點是jvm選來進行GC的線程中斷點。線程在執行到安全點后詢問GC標志位&#xff0c;若標志位標識將要進行GC&#xff0c;則程序主動中斷掛起線程等待GC。安全點的選定基本上是根據"是否具有讓程序長時間執行的特征"為標準進行選定的。目前會產生安全點的主要有&…

深入理解 PHP7 中全新的 zval 容器和引用計數機制

深入理解 PHP7 中全新的 zval 容器和引用計數機制 最近在查閱 PHP7 垃圾回收的資料的時候&#xff0c;網上的一些代碼示例在本地環境下運行時出現了不同的結果&#xff0c;使我一度非常迷惑。 仔細一想不難發現問題所在&#xff1a;這些文章大多是 PHP5.x 時代的&#xff0c;而…

分布式系統的架構思路

見&#xff1a;http://www.cnblogs.com/chulung/p/5653135.html 一、前言 在計算機領域&#xff0c;當單機性能達到瓶頸時&#xff0c;有兩種方式可以解決性能問題&#xff0c;一是堆硬件&#xff0c;進一步提升配置&#xff0c;二是分布式&#xff0c;水平擴展。當然&#xff…