時間限制:1000 ms | 記憶體限制:65535 kb
難度:5
描述春天到了,花兒朵朵盛開,hrdv是一座大花園的主人,在他的花園裡種著許多種鮮花,每當這個時候,就會有一大群遊客來他的花園欣賞漂亮的花朵,遊客們總是會詢問,某個時間有多少種花兒同時在盛開著?hrdv雖然知道每種花兒的開花時間段,但是他不能很快的答出遊客的問題,你能編寫乙個程式幫助他嗎?
輸入第一行有個整數t,表示有t組測試資料,每組測試資料第一行為兩個整數n,m(0輸出
對於每次遊客的詢問,輸出乙個整數在單獨的一行,表示這個時間盛開的花有多少種。
樣例輸入
2樣例輸出1 15 10
42 3
1 44 814
6
012上傳者1
tc_胡仁東
1//本題的關鍵是離散化,不然陣列的空間不能開那麼大,接下來運用樹狀陣列來儲存,查詢,問題便可迎刃而解
23 #include 4 #include 5 #include 6
using
namespace
std;
7const
int max = 300010;8
//測試資料有點水,將 max 改為100010 也能過
9 typedef struct
node
10node;
14node s[max];
15int
a[max],c[max];
1617
int cmp(const
void *a,const
void *b)
1821
22int lowbit(int
i)23
2627
void add(int i,int
value)
2834}35
36int sum(int
i)37
44return
t;45}46
47int
main()
4862 qsort(s,total,sizeof(s[0
]),cmp);
63 count = 1;a[s[0].id]=count;
64for(i=1;i//
大數變小,建立成對映關係
6571
for(i=0;i2;i+=2)//
更新樹狀陣列結點資訊(插線取點法)
7276
for(i=n*2;i)
77 printf("
%d\n
",sum(a[i]));78}
79return0;
80}81//
a樹狀陣列 + 離散化
樹狀陣列 + 離散化
nyoj60誰獲得了最高獎學金
時間限制 1000 ms 記憶體限制 65535 kb 難度 2 描述 某校的慣例是在每學期的期末考試之後發放獎學金。發放的獎學金共有五種,獲取的條件各自不同 2 五四獎學金,每人4000元,期末平均成績高於85分 85 並且班級評議成績高於80分 80 的學生均可獲得 3 成績優秀獎,每人2000...
NYOJ 60誰獲得了最高獎學金
描述 某校的慣例是在每學期的期末考試之後發放獎學金。發放的獎學金共有五種,獲取的條件各自不同 2 五四獎學金,每人4000元,期末平均成績高於85分 85 並且班級評議成績高於80分 80 的學生均可獲得 3 成績優秀獎,每人2000元,期末平均成績高於90分 90 的學生均可獲得 4 西部獎學金,...
nyoj 60 誰獲得了最高獎學金
時間限制 1000 ms 記憶體限制 65535 kb 難度 2 描述 某校的慣例是在每學期的期末考試之後發放獎學金。發放的獎學金共有五種,獲取的條件各自不同 2 五四獎學金,每人4000元,期末平均成績高於85分 85 並且班級評議成績高於80分 80 的學生均可獲得 3 成績優秀獎,每人2000...