時間限制 : - ms 空間限制 : - kb
評測說明 : 1s,256m
問題描述
一年一度的資訊學競賽nk校賽即將開始,何老闆在組織安排報名工作。
南開信競隊分為小學、初中、高中三個梯隊:
小學梯隊有n個隊員,年齡分別是a1,a2,……,an
初中梯隊有n個隊員,年齡分別是b1,b2,……,bn
高中梯隊有n個隊員,年齡分別是c1,c2,……,cn
比賽是組隊參賽,三人一隊,要求每只隊伍裡面必須要有小學、初中和高中各一人。同時,要求每個隊中,小學隊員的年齡《初中隊員的年齡《高中隊員的年齡。
何老闆想知道,總共可能的組隊方案有多少種?請你幫他算一算。兩種組隊方案中,至少存在乙個不相同的同學,即被認為是不同方案。
輸入格式
第一行,乙個整數n
接下來三行,每行n個整數,分別表示每個梯隊的隊員年齡:
輸出格式
乙個整數,表示不同的組隊方案總數。
樣例輸入 1
21 5
2 43 6
樣例輸出 1
樣例輸入 2
31 1 1
2 2 2
3 3 3
樣例輸出 2
樣例輸入 3
63 14 159 2 6 53
58 9 79 323 84 6
2643 383 2 79 50 288
樣例輸出 3
提示1 ≤ n ≤ 105
1 ≤ ai ≤ 109(1 ≤ i ≤ n)
1 ≤ bi ≤ 109(1 ≤ i ≤ n)
1 ≤ ci ≤ 109(1 ≤ i ≤ n)
【分析】
首先觀察題意,很簡單我們可以知道是要我們找到所有遞減的三元陣列的個數。有很多方法都可以做到,但要小心,一不小心就會o(n2)。我們先對a,b,c三個陣列從小到大排序,重點放在b陣列上。因為sort的關係,自然可以用lower_bound、upper_bound處理a,c中的可行選擇個數,之後用乘法原理即可解答。
【標程】
1 #include2 #include3#define r register int
4#define ll long long
5#define for(i, s, n) for (r i = s; i <= n; ++ i)
6#define maxn 100005
7using
namespace
std;
8intn;9
ll ans;
10int
a[maxn], b[maxn], c[maxn];
11 inline char
nc()
15 inline int
read()
22void
ini()
31void
solve()
37 printf("
%lld
", ans);38}
39int
main()
0002組隊參賽規則
quote 乙個參賽隊伍不能超過三人,可以擁有乙個替補。包括替補在內任何參賽隊員必須為高中畢業五年內,才可以參賽,也就是說研究生一年級的學生還可以參加。現在的問題是給你乙個隊伍,請判斷這個隊伍是否合法。輸入資料 輸入資料報括若干組,每一組包括有若干行,第一行為乙個整數n,為這個隊伍的人數,接著有n行...
CCF參賽感悟
ccf也結束了,也不好說自己到底準備了多少,但至少把題庫裡能做的都做過了。這次的ccf原題估計還要等三四個月才能被放到題庫裡,所以在這裡就憑記憶先記下來吧。第一題向來水題,就是判斷乙個圖有多少折點,什麼叫折點呢,說白了就是極值點,不包括首尾兩個點。思路呢就是用一維陣列存下所有的數,然後判斷某個點的前...
記初次參賽
雖然從大學開始就刻意主動性地去接觸了解關於本專業的比賽,在大一暑假也興致勃勃參加了社團acm集訓。對於那次集訓,應該是讓我第一次真正接觸到刷題,a題的大佬們和這其中的過程。也許是自我滿足,自我相信,一直認為相對於這個二本小學校,我的積極努力已經超過常人了,別人在睡覺遊戲時我在學習寫作業 現在想想,自...