象棋比賽問題(排序 C )

2021-07-04 05:31:18 字數 831 閱讀 9087



象棋比賽chess

【問題描述】有n個人要參加西洋棋比賽,該比賽要進行k場對弈。每個人最多參加兩場對弈,最少參加零場對弈。每個人都有乙個與他人都不相同的等級(用乙個正整數來表示)。

在對弈中,等級高的人必須用黑色的棋子,等級低的人必須用白色的棋子。 每個人最多只能用一次黑色的棋子和一次白色的棋子。

為了增加比賽的客觀度,觀眾希望k場對弈中雙方等級差的總和最小。比如有7個選手,他們的等級分別是30,17,26,41,19,38,18,要進行3場比賽,最好的安排是 2 vs 7, 7 vs 5,6 vs 4,此時等級差的總和為(18-17)+(19-18)+(41-38)=5 達到最小。

【輸入格式】

第一行兩個整數n、k。接下來n行,第i行表示第i-1個人等級。

【輸出格式】

最小等級差的總和

【輸入樣例】

7  3

3017

2641

1938

18【輸出樣例】

5【資料範圍】

90% n<=3000

100% n<=100000

所有等級值<110  1<=k<=n-1

此題唯一的價值就是做兩次排序,對於c++來說,簡直沒任何價值。**如下

#include #include #include #include using namespace std;

int lev[100001];

int cha[100000];

int main()

sort(lev+1,lev+n+1);

for(i=1;i

象棋比賽(排序)

題目描述 有 n 個人要參加西洋棋比賽,該比賽要進行 k 場對弈。每個人最多參加兩場對弈,最少參加零場對弈。每個人都有乙個與其他人不相同的等級 用乙個正整數來表示 在對弈中,等級高的人必須用黑色的棋子,等級低的人必須用白色的棋子。每人最多只能用一次黑色的棋子和一次白色的棋子。為了增加比賽的可觀度,觀...

洛谷 象棋比賽(P1626,排序)

有n個人要參加西洋棋比賽,該比賽要進行k場對弈。每個人最多參加兩場對弈,最少參加零場對弈。每個人都有乙個與其他人不相同的等級 用乙個正整數來表示 在對弈中,等級高的人必須用黑色的棋子,等級低的人必須用白色的棋子。每個人最多只能用一次黑色的棋子和一次白色的棋子。為增加比賽的可觀度,觀眾希望k場對弈中雙...

題解 P1626 象棋比賽

這道題題解有點少,還沒有c 的 c應該也可以看懂 所以我來發布一篇 核心思路 現將各等級選手進行從小到大的排列,然後假設每人都會進行比賽,算出每相鄰兩人的差 這裡不用再算不相鄰的差了,因為要使和最小,離得最近的兩數才滿足。比如 1 2 3,2 1 1,3 1 2 再將差進行從小到大的排序 然後輸出前...