敵兵布陣 HDU 1166 (初級線段樹)

2021-08-03 00:21:12 字數 2317 閱讀 9489

think:

1線段樹初級操作:單點更新+區間求和

vjudge題目鏈結

以下為time limit exceeded**——區間求和操作不理解,導致直接確定到點,時間複雜度太大

#include 

#include

using

namespace

std;

const

int n = 2e5 + 4;

int sum[n];

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

void updata(int rt);

void add(int p, int v, int l, int r, int rt);

int find(int l, int r, int l, int r, int rt);

int main()

else

if(strcmp(st, "add") == 0)

else

if(strcmp(st, "sub") == 0)}}

return0;}

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);

updata(rt);

}void updata(int rt)

int find(int l, int r, int l, int r, int rt)

int cnt = 0;

int mid = (l+r) / 2;

if(l <= mid)

cnt += find(l, r, l, mid, rt*2);

if(r > mid)

cnt += find(l, r, mid+1, r, rt*2+1);

return cnt;

}void add(int p, int v, int l, int r, int rt)

int mid = (l+r) / 2;

if(p <= mid)

add(p, v, l, mid, rt*2);

if(p > mid)

add(p, v, mid+1, r, rt*2+1);

updata(rt);

}

以下為accepted**

#include 

#include

using

namespace

std;

const

int n = 2e5 + 4;

int sum[n];

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

void updata(int rt);

void add(int p, int v, int l, int r, int rt);

int find(int l, int r, int l, int r, int rt);

int main()

else

if(strcmp(st, "add") == 0)

else

if(strcmp(st, "sub") == 0)}}

return0;}

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);

updata(rt);

}void updata(int rt)

int find(int l, int r, int l, int r, int rt)

int cnt = 0;

int mid = (l+r) / 2;

if(l <= mid)

cnt += find(l, r, l, mid, rt*2);

if(r > mid)

cnt += find(l, r, mid+1, r, rt*2+1);

return cnt;

}void add(int p, int v, int l, int r, int rt)

int mid = (l+r) / 2;

if(p <= mid)

add(p, v, l, mid, rt*2);

if(p > mid)

add(p, v, mid+1, r, rt*2+1);

updata(rt);

}

線段樹 hdu1166 敵兵布陣

problem description c國的死對頭a國這段時間正在進行軍事演習,所以c國間諜頭子derek和他手下tidy又開始忙乎了。a國在海岸線沿直線布置了n個工兵營地,derek和tidy的任務就是要監視這些工兵營地的活動情況。由於採取了某種先進的監測手段,所以每個工兵營地的人數c國都掌握的...

敵兵布陣 HDU 1166 線段樹

c國的死對頭a國這段時間正在進行軍事演習,所以c國間諜頭子derek和他手下tidy又開始忙乎了。a國在海岸線沿直線布置了n個工兵營地,derek和tidy的任務就是要監視這些工兵營地的活動情況。由於採取了某種先進的監測手段,所以每個工兵營地的人數c國都掌握的一清二楚,每個工兵營地的人數都有可能發生...

敵兵布陣 HDU 1166(線段樹)

c國的死對頭a國這段時間正在進行軍事演習,所以c國間諜頭子derek和他手下tidy又開始忙乎了。a國在海岸線沿直線布置了n個工兵營地,derek和tidy的任務就是要監視這些工兵營地的活動情況。由於採取了某種先進的監測手段,所以每個工兵營地的人數c國都掌握的一清二楚,每個工兵營地的人數都有可能發生...