象棋比赛问题(排序/C++)
来源:互联网 发布:折800淘宝卖家报名活动 编辑:程序博客网 时间:2024/04/28 23:48
象棋比赛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
30
17
26
41
19
38
18
【输出样例】
5
【数据范围】
90% N<=3000
100% N<=100000
所有等级值<110 1<=K<=N-1
此题唯一的价值就是做两次排序,对于C++来说,简直没任何价值。代码如下
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int lev[100001];int cha[100000];int main(){int n,k;cin >> n;cin >> k;int i;for(i=1;i<=n;i++){cin >> lev[i];}sort(lev+1,lev+n+1);for(i=1;i<n;i++){cha[i]=lev[i+1]-lev[i];}sort(cha+1,cha+n);int ans=0;for(i=1;i<=k;i++){ans+=cha[i];}cout << ans << endl;return 0;}
0 0
- 象棋比赛问题(排序/C++)
- 象棋比赛(排序)
- poj象棋比赛(DP)
- 洛谷 P1626 象棋比赛
- 【洛谷】P1626象棋比赛
- 象棋问题
- 象棋问题
- QT写的象棋(C++)
- 一道C语言编程比赛题(时钟追赶问题)
- 谁将会参加比赛的问题(C实现)
- [算法]图算法之骑士遍历问题(象棋中马的遍历问题)分析,C语言实现
- 南邮-1949-比赛成绩排序问题
- 南邮 OJ 1949 比赛成绩排序问题
- 猫和老鼠玩象棋问题
- 象棋将帅问题
- 象棋将帅问题
- 中国将帅象棋问题
- 【C语言】 跳水比赛名次预测问题
- layoutSubviews 和 drawRect
- new Thread 弊端与四种线程池的使用
- C#---截取字符串
- 程序沙盒目录,下面继续来看一下操作文件的两个类
- 一本关于 Total Commander 的书
- 象棋比赛问题(排序/C++)
- 互联网金融 众筹模式会收益不同
- Cocos2dx.3x入门三部曲-Hello Game项目创建(二)
- 2015-05-01至2015-07-30错误积累
- fgets,fputs,fprintf,fscanf
- navigationItem中加入UISegmentedControl
- [BZOJ2879][Noi2012]美食节
- Nagios安装
- iOS真机上的EXC_ARM_DA_ALIGN问题