luogu P1309 瑞士輪 排序

2022-05-10 05:42:10 字數 2263 閱讀 3877

在雙人對決的競技性比賽,如桌球、羽毛球、西洋棋中,最常見的賽制是淘汰賽和迴圈賽。前者的特點是比賽場數少,每場都緊張刺激,但偶然性較高。後者的特點是較為公平,偶然性較低,但比賽過程往往十分冗長。

本題中介紹的瑞士輪賽制,因最早使用於2023年在瑞士舉辦的西洋棋比賽而得名。它可以看作是淘汰賽與迴圈賽的折中,既保證了比賽的穩定性,又能使賽程不至於過長。

2*n 名編號為 1~2n 的選手共進行r 輪比賽。每輪比賽開始前,以及所有比賽結束後,都會按照總分從高到低對選手進行一次排名。選手的總分為第一輪開始前的初始分數加上已參加過的所有比賽的得分和。總分相同的,約定編號較小的選手排名靠前。

每輪比賽的對陣安排與該輪比賽開始前的排名有關:第1 名和第2 名、第 3 名和第 4名、……、第2k – 1 名和第 2k名、…… 、第2n – 1 名和第2n名,各進行一場比賽。每場比賽勝者得1 分,負者得 0 分。也就是說除了首輪以外,其它輪比賽的安排均不能事先確定,而是要取決於選手在之前比賽中的表現。

現給定每個選手的初始分數及其實力值,試計算在r 輪比賽過後,排名第 q 的選手編號是多少。我們假設選手的實力值兩兩不同,且每場比賽中實力值較高的總能獲勝。

輸入格式:

輸入檔名為swiss.in 。

輸入的第一行是三個正整數n、r 、q,每兩個數之間用乙個空格隔開,表示有 2*n 名選手、r 輪比賽,以及我們關心的名次 q。

第二行是2*n 個非負整數s1, s2, …, s2n,每兩個數之間用乙個空格隔開,其中 si 表示編號為i 的選手的初始分數。 第三行是2*n 個正整數w1 , w2 , …, w2n,每兩個數之間用乙個空格隔開,其中 wi 表示編號為i 的選手的實力值。

輸出格式:

輸出檔名為swiss.out。

輸出只有一行,包含乙個整數,即r 輪比賽結束後,排名第 q 的選手的編號。

輸入樣例#1: 

2 4 2 

7 6 6 7

10 5 20 15

輸出樣例#1: 

1資料範圍

對於30% 的資料,1 ≤ n ≤ 100;

對於50% 的資料,1 ≤ n ≤ 10,000 ;

對於100%的資料,1 ≤ n ≤ 100,000,1 ≤ r ≤ 50,1 ≤ q ≤ 2n,0 ≤ s1, s2, …, s2n≤10^8,1 ≤w1, w2 , …, w2n≤ 10^8。

noip2011普及組第3題。

冷靜分析

最暴力的肯定是每battle一次都進行一次結構體快速排序,但是太慢了,60分。

經我們冷靜分析可以發現一些特殊性質,也就是說,一次battle下來,因為有之前的「積分有序性」,所以新的排名並不會有太大的變化。卡sort的情況下,我們可以考慮穩定的歸併,o(nlogn);

這裡使用了一種類mergesort;

注釋寫在**裡。

1 #include2 #include3 #include4

using

namespace

std;

5int

n,r,e;

6struct

node7;

10 node q[200002],win[200002],lose[200002];//

win和lose保證有序。

11bool

cmp(node a,node b)

1216

void

merge()

17 27

else28

32 }//

下面的while迴圈,要麼執行第乙個,要麼執行第二個,因為當 上一迴圈跳出時總有一條件不符合。

33while(i<=tmp)

3438

while(j<=tmp)39

43}44int

main()

4553

for(int i=1;i<=n;i++) scanf("

%d",&q[i].abi);

54 sort(q+1,q+n+1

,cmp);

55for(int i=1;i<=r;i++)

56

67else

6874

}75 merge();//

兩兩battle後統一排序 76}

77 printf("%d"

,q[e].pos);

78return0;

79 }

view code

大道至簡!

洛谷 1309 瑞士輪

題目描述 2 n 名編號為 1 2n 的選手共進行r 輪比賽。每輪比賽開始前,以及所有比賽結束後,都會按照總分從高到低對選手進行一次排名。選手的總分為第一輪開始前的初始分數加上已參加過的所有比賽的得分和。總分相同的,約定編號較小的選手排名靠前。每輪比賽的對陣安排與該輪比賽開始前的排名有關 第1 名和...

洛谷1309 瑞士輪

題目背景 在雙人對決的競技性比賽,如桌球 羽毛球 西洋棋中,最常見的賽制是淘汰賽和迴圈賽。前者的特點是比賽場數少,每場都緊張刺激,但偶然性較高。後者的特點是較為公平,偶然性較低,但比賽過程往往十分冗長。本題中介紹的瑞士輪賽制,因最早使用於1895年在瑞士舉辦的西洋棋比賽而得名。它可以看作是淘汰賽與迴...

P1309 瑞士輪 歸併排序

題目鏈結 題目背景 在雙人對決的競技性比賽,如桌球 羽毛球 西洋棋中,最常見的賽制是淘汰賽和迴圈賽。前者的特點是比賽場數少,每場都緊張刺激,但偶然性較高。後者的特點是較為公平,偶然性較低,但比賽過程往往十分冗長。本題中介紹的瑞士輪賽制,因最早使用於1895年在瑞士舉辦的西洋棋比賽而得名。它可以看作是...