codevs1690 開關燈 線段樹

2022-05-20 16:01:37 字數 824 閱讀 5827

這道題需要支援區間修改和區間詢問,因此採用線段樹加以維護。

由於求的是開著的燈的數目,因此維護sum:區間[ l , r ]中開著的燈的數目。

tag取做0/1,表示區間是否反轉,在進行標記下傳時,如果tag=1,則下傳,否則返回。(tag的選取一般跟操作有關)

**如下:

#include using namespace std;

const int maxn=1e5+10;

int n,m;

struct nodet[maxn<<1];

int tot=1;

inline void pushup(int k)

inline void pushdown(int k,int l,int r)

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

void modify(int k,int l,int r,int x,int y)

int mid=l+r>>1;

pushdown(k,l,r);

if(y<=mid)modify(lson,l,mid,x,y);

else if(x>mid)modify(rson,mid+1,r,x,y);

else modify(lson,l,mid,x,mid),modify(rson,mid+1,r,mid+1,y);

pushup(k);

}int query(int k,int l,int r,int x,int y)

void read_and_parse()

void solve()

}int main()

線段樹 codevs 1690 開關燈

usaco 時間限制 1 s 空間限制 128000 kb 題目等級 鑽石 diamond 題目描述 description 輸入描述 input description 第 1 行 用空格隔開的兩個整數n和m 第 2.m 1 行 每行表示乙個操作,有三個用空格分開的整數 指令號 0代表按下開關,1...

模擬開關燈

1 實驗任務 如圖4.2.1 所示,監視開關 k1 接在 p3.0 埠上 用發光二極體 l1 接在微控制器 p1.0 埠上 顯示開關狀態,如果開關合上,l1亮,開關開啟,l1熄滅。2 電路原理圖 圖4.2.1 3 系統板上硬體連線 1 把 微控制器系統 區域中的 p1.0 埠用導線連線到 八路發光二...

開關燈問題

描述 一條長廊裡依次裝有n 1 n 65535 盞電燈,從頭到尾編號1 2 3 n 1 n。每盞電燈由乙個拉線開關控制。開始,電燈全部關著。有n個學生從長廊穿過。第乙個學生把號碼凡是1的倍數的電燈的開關拉一下 接著第二個學生把號碼凡是2的倍數的電燈的開關拉一下 接著第三個學生把號碼凡是3的倍數的電燈...