線段樹 H 花神遊歷各國

2021-10-05 10:22:47 字數 1643 閱讀 7795

output

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

sample input

4 1 100 5 5

5 1 1 2

2 1 2

1 1 2

2 2 3

1 1 4

sample output

hint

對於100%的資料, n ≤ 100000,m≤200000 ,data[i]非負且小於10^9

ps:1:ret和sum開始沒longlong;

2:開平方需要標記,最多幾次後就開方就沒得用了

3:因為卡時間所以還是不要用cin和cout,我開始就是這個超時

4:ios::sync_with_stdio(false);這個可以優化輸入cin,但此時不能再有scanf

5:注意看題。

**:

123

4567

891011

1213

1415

1617

1819

2021

2223

2425

2627

2829

3031

3233

3435

3637

3839

4041

4243

4445

4647

4849

5051

5253

5455

5657

5859

6061

6263

6465

6667

6869

7071

7273

7475

#include #include #include using namespace std;

typedef long long ll;

#define n 410000//4倍

ll sum[n];//longlong存

int a[n],vis[n];

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

int mid=(l+r)/2;

build(l,mid,rt*2);

build(mid+1,r,rt*2+1);

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

vis[rt]=(vis[rt*2]&vis[rt*2+1]);

}ll query(int l1,int r1,int l,int r,int rt)

if(r1>mid)

return ret;

}void update(int l1,int r1,int l,int r,int rt)

int mid=(l+r)/2;

if(l1<=mid)

if(r1>mid)

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

vis[rt]=(vis[rt*2]&vis[rt*2+1]);

}int main()

build(1,n,1);

int m;

cin>>m;

while(m--)

if(a==2)

}return 0;

}

花神遊歷各國 線段樹開方

時間限制 1000 ms 記憶體限制 524288 kb 提交數 127 通過數 47 原題來自 bzoj 3211 花神喜歡步行遊歷各國,順便虐爆各地競賽。花神有一條遊覽路線,它是線型的,也就是說,所有遊歷國家呈一條線的形狀排列,花神對每個國家都有乙個喜歡程度 當然花神並不一定喜歡所有國家 每一次...

花神遊歷各國

0 和 1 開方之後不會改變,對 0,1 節點打上標記 如果孩子節點都打上標記了,說明這些孩子節點的和不會改變,那麼父節點也打上標記 對於打上標記的點,change 的時候直接 return include include int n,m long long arr 100005 2 at 1000...

花神遊歷各國 bzoj3211 線段樹

有乙個n個數的序列a,請寫乙個程式完成下列操作 1 l r表示查詢l到r的和 2 l r表示把每個a x l x r 變為sqrt x n 100000,m 100000 其實我是偶然看過冪偉的題解的 滑稽 109 最多開根6次就變成1了,對於1無論怎樣開根都是不影響的 兩種做法。如果是樹狀陣列的話...