【題目描述】
mushroom有一行數,初始時全部是0。現在mushroom有m個區間[l,r],他希望用以下操作得到新的序列。
從m個給定區間中選擇乙個區間[s,t],把區間中的數對應元素全部翻轉。(0變1,1變0)
請告訴mushroom他能得到多少區間。(模10^9+7)
【輸入格式】
第一行包含兩個整數n,m。表示n個數和m個區間。
接下來m行是所表示的區間。
【輸出格式】
乙個整數,表示能得到的區間數。
【樣例輸入】
3 31 1
2 23 3
【樣例輸出】
8【資料範圍】
對於30%的資料,n,m<=20
對於60%的資料,n,m<=100
對於100%的資料,n,m<=100000
【樣例解釋】
每個位置都可以單個修改,所以有8種可能。
此題ans=pow(2,m),但m需要處理,也就是有重複的就要刪去
情況1:
這種情況很明顯可以得出上面的邊需要刪去,m--
情況2:
這種情況也很明顯也可以得出上面的邊需要刪去,m--(考試的時候就沒有考慮到這個情況,3個tle,7個wa……)
於是就得到了很神奇的並查集演算法。(很神奇是不是,我也是這麼覺得)
只要兩點的father相等,說明先前已經連上,後來加的邊可以刪去
然後直接累乘就能過了。
1 #include2 #include3 #include4 #include5using
namespace
std;
6int
n,m;
7const
int maxn=100005;8
long
long mod=1e9+7;9
intfa[maxn];
10int findfather(int
x)11
15int
main()
1633
long
long ans=1;34
for(int i=1;i<=m;i++)
3540 printf("
%i64d
",ans);
41return0;
42 }
NOIP模擬題 連通
給定乙個無向圖,請編寫乙個程式實現以下兩種操作 1 d x y,從原圖中刪除連線x和y頂點的邊。2 q x y,詢問x和y頂點是否連通。這也是連通問題,考慮用並查集解決。但是這是刪除的問題耶,怎麼辦?考慮將刪除變為連通,能不能將所有操作給反過來,從最後乙個操作開始處理。當然是可以的。include ...
Noip模擬題 山峰
description在n m的棋盤上不重複的填1到n m 如果乙個數字比周圍的八個數字大,那麼他就是乙個山峰。現在告訴你所有山峰的位置,問你填數的方案數mod 12345678 input 輸入第一行兩個數字 n m意義如題目描述。接下來n 行,每行 m個字元,表示非山峰,x 表示山峰。1 n 4...
NOIP模擬題 訂餐
題目描述 這個週末,joe 一如既往的拿出了外賣的點餐單。選單上從上到下列著 n 個菜,每個菜 joe 會列出乙個美味值。joe 這次希望從選單上連續地點 k 個菜,並且美 味值之和最大。但在計算美味值之和時,joe 有自己的一套計算方法 由於他會按照順序享受這 k 個菜,並且越吃越後面的菜他就越享...