codevs1132 瑞士輪 歸併排序

2021-08-03 19:35:13 字數 614 閱讀 8081

´

分析:

´如果每次

n=100000

排序,共進行r輪

´r*n*

logn

=50*

100000

*20=10^8,超時

´第一次排序後

每次贏的和輸的隊伍分別有序,只需要

o(n)

的歸併排序,時間複雜度變為5*

10^6,

不再超時。

#include#include//sort

using namespace std;

struct nodea[200002],b[200002],c[200002];

int n,r,q;

bool cmp(node x,node y)

for(i=1;i<=m;i++)

cin>>a[i].w;

sort(a+1,a+m+1,cmp);

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

else

}for (j=1;j<=m;j++)

if (k2>n)

if ((b[k1].fs>c[k2].fs)||((b[k1].fs==c[k2].fs)&&b[k1].xh

瑞士輪(歸併)

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

洛谷 P1309 瑞士輪(歸併)

題意 一共2n個人 有乙個初始分數 進行k輪比賽,每輪比賽按當前得分排出名次,然後比賽按照第1名和第2名,第3和第4 第2n 1和2n進行 實力各不相同且實力大的總能獲勝 獲勝方加一分,失敗方分數不變。思路 一開始想在每輪比賽前用sort排序,算了下複雜度大概o n n logn n k 顯然不行。...

P1309 瑞士輪 歸併排序

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