BZOJ 3211 花神遊歷各國(線段樹)

2021-08-04 04:07:40 字數 1329 閱讀 8008

time limit: 5 sec  memory limit: 128 mb

submit: 3476  solved: 1288 [

submit][

status][

discuss]

每次x=1時,每行乙個整數,表示這次旅行的開心度 4

1 100 5 5

51 1 2

2 1 2

1 1 2

2 2 3

1 1 4

1011111

hint

這道題之前在qscoj上寫過,一模一樣的,乍一看感覺單點更新會超時(其實真的會),但是你會發現有許多不必要的操作,

比如說當乙個數的值小於等於1時,再對它開根號就沒有意義了,所以開乙個最大值陣列標記一下區間最大值即可。。。。

假如該區間最大值<=1時,則該區間就沒必要更新了,還是很好想的是吧

#include#include#include#include#include#include#include#include#include#includeusing namespace std;

typedef long long ll;

#define inf 10000000

#define mod 1000000007

#define maxn 800005

#define eps 1e-10

ll sum[maxn],maxs[maxn];

void build(int id,int l,int r)

int m=(l+r)/2;

if(l<=m)

build(id*2,l,m);

if(r>m)

build(id*2+1,m+1,r);

sum[id]=sum[id*2]+sum[id*2+1];

maxs[id]=max(maxs[id*2],maxs[id*2+1]);

}void updata(int id,int l,int r,int l,int r)

int m=(l+r)/2;

if(l<=m)

updata(id*2,l,m,l,r);

if(r>m)

updata(id*2+1,m+1,r,l,r);

sum[id]=sum[id*2]+sum[id*2+1];

maxs[id]=max(maxs[id*2],maxs[id*2+1]);

}ll query(int id,int l,int r,int l,int r)

int main(void)

return 0;

}

BZOJ3211 花神遊歷各國

3211 花神遊歷各國 time limit 5 sec memory limit 128 mb submit 1144 solved 416 submit status discuss description input output 每次x 1時,每行乙個整數,表示這次旅行的開心度 sample...

bzoj3211 花神遊歷各國

其實這是一道sb題 哦不其實是兩道2333333 還有3038也是同一題 然而在寫3038的時候由於資料太水直接就a掉了。剛剛拿之前的code交上去就wa啦。不能判斷區間和是否 r l 1因為會出現0 所以要開多乙個東西表示這個區間還有多少個數不會再改變了 每個數可以開方的次數是很小的,就當做是常數...

bzoj 3211 花神遊歷各國

每次x 1時,每行乙個整數,表示這次旅行的開心度 4 1 100 5 5 51 1 2 2 1 2 1 1 2 2 2 3 1 1 4 10111 11對於100 的資料,n 100000,m 200000 data i 非負且小於10 9 對於這個開方,一開始yy了好久,後來發現,10 9的數頂多...