time limit: 1 sec memory limit: 128 mb
submit: 498 solved: 65
[submit][status][web board]
新年將至,yy準備掛一排彩燈,已知彩燈剛掛完的彩燈共有n盞(編號為1,2,3,……),並且都是滅的。彩燈的閃爍由一段程式控制。
每一秒鐘程式會生成兩個正整數a和b(1<=a,b<=n),然後將編號為a和b之間的所有燈的狀態改變一次,即如果燈i是滅的,那麼經過一次改變,燈i會亮,如果燈i是亮的,經過一次改變,燈i會滅。
當yy看著自己掛的彩燈不斷閃爍的時候,問題來了,yy想知道任意時刻某一區間燈的狀態。
多組測試資料,每一組第一行是乙個整數n(1<=n<=1000000)和乙個整數m(1<=m<=3000)。
然後是m行資料,包括以下兩種形式:
1 a b 表示燈a和燈b之間的燈(含燈a和燈b)變換一次狀態。
0 x y 表示yy想知道此刻燈x到燈y(包含燈x和燈y)的狀態.
對於每次yy想知道結果的時候,輸出一行燈的狀態(編號小的燈優先),如果是亮的輸出」1」,否則輸出」0」;
3 3
1 1 2
1 2 3
0 1 3
101[submit][status][web board]
中文english
anything about the problems, please contact admin:admin
解析:很久以前做過的一道樹狀陣列的題目,超時了。以為是要線段樹去解決的,事實上,並不是。
就是因為有可能a>b.orx>y,這一點給忽略了。所以一直超時。應該要對a,b預處理一下。交換大小。
如果樹狀陣列不清楚的 可以看看我總結的部落格-------樹狀陣列
#includeusing namespace std;
#define e exp(1)
#define pi acos(-1)
#define mod 1000000007
#define inf 0x3f3f3f3f
#define ll long long
#define ull unsigned long long
#define mem(a,b) memset(a,b,sizeof(a))
const int maxn=1000000+10;
int c[maxn];
int n,m,k,a,b;
int lowbit(int x)
void update(int i,int value)
}int getsum(int i)
return sum;
}int main()
if(k==1)
else }}
return 0;
}
zcmu 1156 新年彩燈 (樹狀陣列)
題目 time limit 1 sec memory limit 128 mb submit 502 solved 67 submit status web board 新年將至,yy準備掛一排彩燈,已知彩燈剛掛完的彩燈共有n盞 編號為1,2,3,並且都是滅的。彩燈的閃爍由一段程式控制。每一秒鐘程式...
zcmu1156 新年彩燈
time limit 1 sec memory limit 128 mb submit 534 solved 78 submit status web board 新年將至,yy準備掛一排彩燈,已知彩燈剛掛完的彩燈共有n盞 編號為1,2,3,並且都是滅的。彩燈的閃爍由一段程式控制。每一秒鐘程式會生成...
樹狀陣列1 樹狀陣列入門
仔細看一下,發現tree的每乙個節點的高度並不是隨意的,而是由它轉成二進位制之後末尾連續零的數量決定的,連續零的數量加1,就是高度,例如 3 11 零的數量為0,加1等於1,所以它的高度就是1 6 110 零的數量為1,加1等於2,所以它的高度就是2 8 1000 零的數量為3,加1等於4,所以它的...