A 組隊參賽

2022-08-12 15:48:22 字數 1536 閱讀 5754

時間限制 : - 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題的大佬們和這其中的過程。也許是自我滿足,自我相信,一直認為相對於這個二本小學校,我的積極努力已經超過常人了,別人在睡覺遊戲時我在學習寫作業 現在想想,自...