分塊 凸包 旅行計畫

2021-09-10 02:20:45 字數 1386 閱讀 2262

bzoj2388

維護區間加,字首和最大值

如果把下標看做x,字首和看做y,就變成了找凸包上最高點的問題

修改整塊:維護斜率,首項

修改散塊:暴力重構

對最後乙個散塊後面的影響:整體加上乙個數,用標記

code:

#include

#define ill long long

#define inf 1e18

#define db double

using

namespace std;

inline

intgetint()

while

(isdigit

(ch)

)return res*f;

}const

int n=

100005

,sqrr=

350;

int num,n,m,id[n]

,st[sqrr]

,ed[sqrr]

,cnt[sqrr]

;int ans[sqrr]

[sqrr]

,sqr;

ill a[n]

,fir[sqrr]

,d[sqrr]

,add[sqrr]

;int sta[n]

,top;

inline db k

(int x,

int y)

inline

void

build

(int v)

sta[0]

=0;sta[top+1]

=n+1

;cnt[v]

=top;

for(

int i=

0;i<=top+

1;i++

) ans[v]

[i]=sta[i];}

inline

void

pushdown

(int x)

inline ill calc

(int x)

inline ill query

(int x)

}signed

main()

tmp=k*

(y-x+1)

;for

(int i=y+

1;i<=ed[r]

;i++

)a[i]

+=tmp;

build

(r);

for(

int i=r+

1;i<=num;i++

)add[i]

+=tmp;

}else

}return0;

}

洛谷4192 旅行規劃(分塊 凸包)

常數巨大警告qwq。這道題其實題意很簡單,維護乙個序列,支援區間加,區間查詢最大字首和。因為是查詢字首和所以直接維護乙個區間和,區間加就變成了區間加首項為k 公差為k的等差數列。因為乙個等差數列 乙個等差數列還是乙個等差數列,所以這樣做是正確的。所以就有兩個選擇 線段樹和分塊,但考慮到線段樹最後合併...

查稅 斜率優化 單調佇列維護凸包 分塊 )

id3167 有n個辦公室,m個操作,依次讀入 type 如果type為1 接著讀入 t k z s 表示乙個公司於t時刻進駐k辦公室,每天盈利為z,其一開始有s元。若k位置本有別的公司,別的公司會被覆蓋。如果type為2 接著讀入t b 表示於t時刻,你要找出區間 a,b 內,最有錢的公司的錢數。...

nyoj 253 LK的旅行 計算幾何 凸包

時間限制 2000 ms 記憶體限制 65535 kb 難度 5 描述 lk最近要去某幾個地方旅行,她從地圖上計畫了幾個點,並且用筆點了出來,準備在五一假期去這幾個城市旅行。現在希望你找出她點的所有的點中距離最遠的兩個點的距離是多少。各個景點可以認為是在乙個平面上。輸入第一行有乙個整數0輸出 每組資...