象棋比赛问题(排序/C++)
2015-07-30 17:31
639 查看
象棋比赛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;
}
象棋比赛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;
}
相关文章推荐
- 缺少libstdc++.so.6库的原因及解决办法
- 在C语言中关于scanf()函数需要注意的一些事项
- C++生成全局唯一Guid
- C++--String类型各种重载函数的实现
- C++如何实现DNS域名解析
- C++ 字符串
- C++中的RAII机制
- 【总结】关于C++虚函数、多态和对象切割
- C++内部数据类型和非内部数据类型
- 设计模式C++实现(3)——适配器模式
- 为什么在C语言中 3<x<5无论x取什么值,最终结果都为1
- 如何验证C语言中小数默认是double类型
- 在C语言中如何确定一个数的溢出值是多少?
- A*寻路算法C++简单实现
- 不能将参数 2 从“TCHAR *”转换为“const char *”
- 设计模式C++实现(2)——策略模式
- 正方形计数问题(穷举+pair+struct/C++)
- 设计模式C++实现(1)——工厂模式
- C++类里面的const
- c++中size_type和size_t的关系