我覺得我大概已經是個zz了,普及題都不會做還得看題解,難受。
$o(rnlogn)$肯定過不了(過了也沒意義)
複雜度能降下來肯定序列是有規律可循的。
於是可以發現,勝者組和敗者組他們的s永遠都是單調減的。
然後就把兩個有序的勝者組和敗者組合並就行了,和歸併排序差不多。
我的智商已如風中殘燭。
#include#include#include
#include
#include
#include
#include
#include
using
namespace
std;
typedef
long
long
ll;const
int n=2e5+5
;inline
intread()
while(isdigit(ch))x=(x<<3)+(x<<1)+(ch^48),ch=getchar();
return w?-x:x;
}struct
peoplea[n],b[n],c[n];
intn,r,q;
bool
cmp(people x,people y)
void
msort()
else
}for(int i=1,j=1,k=1;i<=2*n;i++)
}int
main()
for(int i=1;i<=2*n;i++)a[i].w=read();
sort(a+1,a+2*n+1
,cmp);
for(int i=1;i<=r;i++)
printf("%d
",a[q].id);
return0;
}
洛谷 1309 瑞士輪
題目描述 2 n 名編號為 1 2n 的選手共進行r 輪比賽。每輪比賽開始前,以及所有比賽結束後,都會按照總分從高到低對選手進行一次排名。選手的總分為第一輪開始前的初始分數加上已參加過的所有比賽的得分和。總分相同的,約定編號較小的選手排名靠前。每輪比賽的對陣安排與該輪比賽開始前的排名有關 第1 名和...
洛谷1309 瑞士輪
題目背景 在雙人對決的競技性比賽,如桌球 羽毛球 西洋棋中,最常見的賽制是淘汰賽和迴圈賽。前者的特點是比賽場數少,每場都緊張刺激,但偶然性較高。後者的特點是較為公平,偶然性較低,但比賽過程往往十分冗長。本題中介紹的瑞士輪賽制,因最早使用於1895年在瑞士舉辦的西洋棋比賽而得名。它可以看作是淘汰賽與迴...
洛谷P1309 瑞士輪 題解
題目傳送 思路非常簡單,只要開始時把結構體排個序,每次給贏的加分再排序,共r次,最後再輸出分數第q大的就行了。天真的我估錯時間複雜度用每次用sort暴力排序結果60分。實際上這道題估算時間複雜度時o括號裡的n並不是輸入的n,而是輸入的n乘2,這就要求我們精準地估算時間複雜度以採取合適的演算法來解題。...