這道題需要支援區間修改和區間詢問,因此採用線段樹加以維護。
由於求的是開著的燈的數目,因此維護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的倍數的電燈...