象棋比賽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 再將差進行從小到大的排序 然後輸出前...