1. 程式人生 > >【POI2011】【BZOJ2216】Lightning Conductor

【POI2011】【BZOJ2216】Lightning Conductor

Description

已知一個長度為n的序列a1,a2,…,an。
對於每個1<=i<=n,找到最小的非負整數p滿足 對於任意的j, aj < = ai + p - sqrt(abs(i-j))

Input

第一行n,(1<=n<=500000)
下面每行一個整數,其中第i行是ai。(0<=ai<=1000000000)

Output

n行,第i行表示對於i,得到的p

Sample Input

6

5

3

2

4

2

4

Sample Output

2

3

5

3

5

4

HINT

Source

隨便化一下式子就發現顯然是決策單調的..

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#define MAXN 500010
#define GET (ch>='0'&&ch<='9')
using namespace std;
template <class classname>
inline void in(classname &x)
{
    char ch=getchar();x
=0; while (!GET) ch=getchar(); while (GET) x=x*10+ch-'0',ch=getchar(); } int n; int a[MAXN]; double f[2][MAXN]; struct node { int l,r,x; node() {} node(int _l,int _r,int _x) { l=_l;r=_r;x=_x; } }q[MAXN]; inline double calc(int j,int i) { return a[j]+sqrt(abs(j-i))-a[i]; } inline int
find(node d,int x) { int l=d.l,r=d.r,mid=(l+r)>>1; for (;l<=r;mid=(l+r)>>1) if (calc(x,mid)<calc(d.x,mid)) l=mid+1; else r=mid-1; return l; } void solve(int id) { for (int i=1,h=1,t=0,j;i<=n;i++) { if (h<=t&&++q[h].l>q[h].r) h++;f[id][i]=calc(q[h].x,i); if (h>t||calc(i,n)>calc(q[t].x,n)) { while (h<=t&&calc(i,q[t].l)>calc(q[t].x,q[t].l)) t--; if (h<=t) j=find(q[t],i),q[t].r=j-1,q[++t]=node(j,n,i); else q[++t]=node(i,n,i); } } } int main() { in(n); for (int i=1;i<=n;i++) in(a[i]); solve(0); for (int i=1;i<=(n>>1);i++) swap(a[i],a[n-i+1]); solve(1); for (int i=1;i<=n;i++) printf("%d\n",max(0,(int)ceil(max(f[0][i],f[1][n-i+1])))); } 

相關推薦

題解 P3521 [POI2011]ROT-Tree Rotations

新的 eight 寫法 這樣的 完成 個數 col 參考 線段樹 這道題采用權值線段樹合並的解法。 首先講一下解法中出現的兩個概念:權值線段樹與線段樹合並。 所謂權值線段樹,可以理解為維護的信息反過來的普通線段樹,我個人認為值域線段樹這個名字其實要準確一些。

BZOJ2216[Poi2011]Lightning Conductor 決策單調性

隊列 節點 zoj blog output tdi 最小 class clas 【BZOJ2216】[Poi2011]Lightning Conductor Description 已知一個長度為n的序列a1,a2,...,an。對於每個1<=i<=n,

bzoj2216[Poi2011]Lightning Conductor 1D1D動態規劃優化

規劃 sample long 得到 mes tput stream truct 優化 Description 已知一個長度為n的序列a1,a2,…,an。對於每個1<=i<=n,找到最小的非負整數p滿足 對於任意的j, aj < = a

POI2011BZOJ2216Lightning Conductor

Description 已知一個長度為n的序列a1,a2,…,an。 對於每個1<=i<=n,找到最小的非負整數p滿足 對於任意的j, aj < = ai + p - sqrt(abs(i-j)) Input 第一行n,(1<=n

BZOJ2212 [Poi2011]Tree Rotations 線段樹合並

namespace 二叉 情況 一點 sizeof mem IV efi ota 題目鏈接 BZOJ2212 題解 一棵子樹內的順序不影響其與其它子樹合並時的答案,這一點與歸並排序的思想非常相似 所以我們只需單獨處理每個節點的兩棵子樹所產生的最少逆序對即可 只有兩種情況,要

BZOJ2276 [Poi2011]Temperature 單調隊列

long long -- == getch emp CP fin div 空間 題目鏈接 BZOJ2276 題解 一開始看錯題,以為求的是可以不連續的,想出一個奇怪的線段樹,發現空間根本開不下?? 題目要我們求連續的最長可能不下降區間 對於區間\([l,r]\)如果合法,當

bzoj 2528: [Poi2011]Periodicitykmp+構造

get() uri [1] swap char lse pri iostream ring 神仙構造,做不來做不來 詳見:http://vfleaking.blog.163.com/blog/static/174807634201329104716122/ #include

線段樹合並(POI2011ROT-Tree Rotations)

lse data 0ms 感到 題意 org 權值線段樹 pro line 線段樹合並(【POI2011】ROT-Tree Rotations) 題意 現在有一棵二叉樹,所有非葉子節點都有兩個孩子。在每個葉子節點上有一個權值(有nn個葉子節點,滿足這些權值為1…n1…n的一

POI2011TEM-Temperature

題面 某國進行了連續n天的溫度測量,測量存在誤差,測量結果是第i天溫度在[li,ri]範圍內。 求最長的連續的一段,滿足該段內可能溫度不降。 分析 我們發現要滿足這個可能的溫度不降,必須避免Li>Rj(i<j)的情況出現。 因此,我們維護L的單調不遞減佇列,對於每個R,需要找到一個比它小

BZOJP2212&P3702Poi2011Tree Rotations二叉樹題解啟發式合併

啟發式合併不解釋 Code: #include<bits/stdc++.h> using namespace std; const int maxn=4e5+5; struct node{ int val,key,size,s; nod

BZOJP2530Poi2011Party題解水題

最近兩天頹的厲害啊唉…… ==============分割線==================== 讓在團裡的和不在團裡的兩兩抵消,剩下的就是 Code: #include<bits/std

BZOJ2212POI2011Tree Rotations(線段樹合併)

Description Solution 對於每個節點有一棵權值線段樹,向上遞迴時合併同時計算逆序對即可。 Source /*****************************

整體二分P3527 [POI2011]MET-Meteors

break output for solution main () cas emp 覆蓋 Description 有 n 個國家,總共占有一個環,環被分成了 m 段,已知有 k 次流星雨會落在這個環上的一些位置。再給出每個國家目標收集多少流星,對每個國家求出第幾次流星雨後可

BZOJ 2530 Poi2011 Party 列舉

BZOJ 2530 Poi2011 Party Description Byteasar intends to throw up a party. Naturally, he would like it to be a success. Furthermore

app性能測試通過loadrunner錄制

端口 dash rip 路徑 tar des use 壓測 solution 隨著智能手機近年來的快速增長,從遊戲娛樂到移動辦公的各式各樣的手機APP軟件滲透到我們的生活中,對於大型的手機APP測試不僅要關註它的功能性、易用性還要關註它的性能,最近發現LoadRunner1

面試Spring常見問題總結06

類名 truct htm 持久化框架 type 兩個 請求 method val 【常見面試問題總結文件夾>>>】 51、spring中的applicationContext.xml能不能改為其它名字 ContextLoaderListene

考前沖刺!2017註冊建築師考前押題

http 二級 自信 ec2 分數 font 自信心 設計 註冊   本周星期六、星期天,也就是5月6、7號,2017年註冊建築師的考試工作即將全面開啟,各位考生一定是各種忐忑,但是最重要的是考生一定要穩定情緒,拿出百分的自信,踏入考場,這裏小編先預祝大家考試過關。   

翻譯自mos文章使用asm來部署 超大數據庫(10TB到PB 範圍)--針對oracle 10G

2個 數值 acl 5.1 transport after 例如 clas rain 使用asm來部署 超大數據庫(10TB到PB 範圍) 參考原文: Deployment of very large databases (10TB to PB range) with

spark 深入學習 03Spark RDD的蠻荒世界

解釋 不難 特性 bsp resid 易懂 優化 方式 序列 RDD真的是一個很晦澀的詞匯,他就是伯克利大學的博士們在論文中提出的一個概念,很抽象,很難懂;但是這是spark的核心概念,因此有必要spark rdd的知識點,用最簡單、淺顯易懂的詞匯描述。不想用學術話的語言來

[1-4] 把時間當做朋友(李笑來)Chapter 4 開拓我們的心智 摘錄

還要 機會 區別 led 選擇性 找不到 頁面 索引 保持 1. 獲得知識的基本途徑 所有的人獲取知識的最為基礎的手段就是“體驗”。 比“體驗”再高級一點的獲取