Bzoj 2957 樓房重建 線段樹

2022-02-13 03:04:56 字數 2005 閱讀 1821

2957: 樓房重建

time limit:10 secmemory limit: 256 mb

description

小a的樓房外有一大片施工工地,工地上有n棟待建的樓房。每天,這片工地上的房子拆了又建、建了又拆。他經常無聊地看著窗外發呆,數自己能夠看到多少棟房子。

為了簡化問題,我們考慮這些事件發生在乙個二維平面上。小a在平面上(0,0)點的位置,第i棟樓房可以用一條連線(i,0)和(i,hi)的線段表示,其中hi為第i棟樓房的高度。如果這棟樓房上任何乙個高度大於0的點與(0,0)的連線沒有與之前的線段相交,那麼這棟樓房就被認為是可見的。

施工隊的建造總共進行了m天。初始時,所有樓房都還沒有開始建造,它們的高度均為0。在第i天,建築隊將會將橫座標為xi的房屋的高度變為yi(高度可以比原來大—修建,也可以比原來小—拆除,甚至可以保持不變—建築隊這天什麼事也沒做)。請你幫小a數數每天在建築隊完工之後,他能看到多少棟樓房?

input

第一行兩個正整數n,m

接下來m行,每行兩個正整數xi,yi

output

m行,第i行乙個整數表示第i天過後小a能看到的樓房有多少棟

sample input

3 4

2 4

3 6

1 1000000000

1 1

sample output

1 1

1 2

資料約定

對於所有的資料1<=xi<=n,1<=yi<=10^9

n,m<=100000

hint

source

中國國家隊清華集訓 2012-2013 第一天

/*

樹上動態lis.

這題主要考merge.

關於區間merge的一些思考.

只要保證左右區間能夠merge

我們可以分開考慮左右區間.

比如這題就只考慮用合併好的左區間去考慮merge右區間.

需要考慮遞迴的特點.

將右區間分成兩半分兩種情況討論.

case 1:左區間的max>右區間左邊的max.

此時右區間左邊合併好的lis對答案是沒貢獻的.

case 2:左區間的max《右區間左邊的max.

此時右區間右邊合併好的lis對答案的貢獻就是整個lis,

然後遞迴處理左區間又變成了這兩種情況.

ps:此處的val均為斜率.

*/#include

#include

#include

#define maxn 100001

using

namespace

std;

struct datatree[maxn*4];

struct nodes[maxn];

int n,m,cut,ans,tot;

double a[maxn];

int read()

while(ch>='0'&&ch<='9') x=x*10+ch-48,ch=getchar();

return x*f;

}void build(int l,int r)

int slove(int k,double x)

void updata(int k)

void change(int k,int x,double z)

int mid=(tree[k].l+tree[k].r)>>1;

if(x<=mid) change(tree[k].lc,x,z);

else change(tree[k].rc,x,z);

updata(k);

return ;

}int main()

sort(a+1,a+m+1);

for(int i=1;i<=m;i++)

return

0;}

BZOJ2957 樓房重建(線段樹)

這裡放傳送門 可以發現如果一段樓房能被看見,那麼它們跟原點的連線的斜率都是單調遞增的。於是這就變成了乙個維護上公升序列的題。這裡的上公升序列不是最長上公升子串行那樣的東西,而是相當於貪心地選擇,選中的子串行中的每乙個元素它前面都不能存在大於等於它的元素。比如說,有乙個斜率序列是1,2,4,3,4,如...

BZOJ2957 樓房重建 線段樹

題目 time limit 10 sec memory limit 256 mb submit 2259 solved 1069 submit status discuss 小a的樓房外有一大片施工工地,工地上有n棟待建的樓房。每天,這片工地上的房子拆了又建 建了又拆。他經常無聊地看著窗外發呆,數自...

bzoj2957樓房重建 線段樹

小a的樓房外有一大片施工工地,工地上有n棟待建的樓房。每天,這片工地上的房子拆了又建 建了又拆。他經常無聊地看著窗外發呆,數自己能夠看到多少棟房子。為了簡化問題,我們考慮這些事件發生在乙個二維平面上。小a在平面上 0,0 點的位置,第i棟樓房可以用一條連線 i,0 和 i,hi 的線段表示,其中hi...