貪婪大陸難度等級 ★★
時間限制 1000 ms (1 s)
記憶體限制 128 mb
測試資料 10 簡單對比
輸入檔案:greedisland.in 輸出檔案:greedisland.out 簡單對比
時間限制:1 s 記憶體限制:128 mb
試題四:貪婪大陸
【題目描述】
面對螞蟻們的瘋狂進攻,小ff的tower defense宣告失敗……人類被螞蟻們逼到了greed island上的乙個海灣。現在,小ff的後方是一望無際的大海,前方是變異了的超級螞蟻。 小ff還有大好前程,他可不想命喪於此, 於是他派遣手下最後一批改造scv布置地雷以阻擋螞蟻們的進攻。
小ff最後一道防線是一條長度為n的戰壕, 小ff擁有無數多種地雷,而scv每次可以在[ l , r ]區間埋放同一種不同於之前已經埋放的地雷。 由於情況已經十萬火急,小ff在某些時候可能會詢問你在[ l』 , r』] 區間內有多少種不同的地雷, 他希望你能盡快的給予答覆。
【輸入格式】
第一行為兩個整數n和m; n表示防線長度, m表示scv布雷次數及小ff詢問的次數總和。
接下來有m行, 每行三個整數q,l , r; 若q=1 則表示scv在[ l , r ]這段區間布上一種地雷, 若q=2則表示小ff詢問當前[ l , r ]區間總共有多少種地雷。
【輸出格式】
對於小ff的每次詢問,輸出乙個答案(單獨一行),表示當前區間地雷總數。
【輸入樣例】
5 4
1 1 3
2 2 5
1 2 4
2 3 5
【輸出樣例】
1 2
【資料範圍】
對於30%的資料: 0<=n, m<=1000;
對於100%的資料: 0<=n, m<=10^5.
/*
一開始一直在想區間的計算.
然後腦洞不會.
看了看題解.
從反方面想.
樹狀陣列維護的是端點的出現次數.
對於[l,r]的貢獻.
只需要求出[1,l-1]中當過右端點的點的次數,
[r+1,n]中當過左端點的點的次數,
然後用詢問次數減去即可.
*/#include
#include
#define maxn 100001
using namespace std;
int n,m,tot,sl[maxn],sr[maxn];
intread()
while(ch>='0'&&ch<='9')x=x
*10+ch-48,ch=getchar();
return
x*f;
}int lowbit(int t)
void addl(int
x,int data)
}void addr(int
x,int data)
}int queryl(int
x) return ans;
}int queryr(int
x) return ans;
}int main()
}return
0;}
貪婪大陸(cogs 1008)
題目描述 面對螞蟻們的瘋狂進攻,小ff的tower defense宣告失敗 人類被螞蟻們逼到了greed island上的乙個海灣。現在,小ff的後方是一望無際的大海,前方是變異了的超級螞蟻。小ff還有大好前程,他可不想命喪於此,於是他派遣手下最後一批改造scv布置地雷以阻擋螞蟻們的進攻。小ff最後...
cogs 1008 貪婪大陸
不要思維定視 盯著線段樹維護l r 的ans不放 顯然沒法區間合併 換一種思路 如果打暴力的話 o nm 每次詢問 掃一遍之前所有的修改 有交點則說明種數 接下來考慮如何優化 我們把每個區間看做 l,r 的座標內的點 然後查詢區間l li r l ri r內有多少點 這樣的查詢在二維座標裡不會查 反...
樹狀陣列 貪婪大陸
人類被螞蟻們逼到了 greed island 上的乙個海灣。現在,小 ff 的後方是一望無際的大海,前方是變異了的超 級螞蟻。小 ff 還有大好前程,他可不想命喪於此,於是他派遣手下最後一批改造 scv 布置地雷以阻擋螞蟻們的進攻。小 ff 最後一道防線是一條長度為 n 的戰壕,小 ff 擁有無數多...