B. Soldier and Badges
2015-06-08 18:31
405 查看
time limit per test
3 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
Colonel has n badges. He wants to give one badge to every of his n soldiers.
Each badge has a coolness factor, which shows how much it's owner reached. Coolness factor can be increased by one for the cost of one coin.
For every pair of soldiers one of them should get a badge with strictly higher factor than the second one. Exact values of their factors aren't important, they just need to have distinct factors.
Colonel knows, which soldier is supposed to get which badge initially, but there is a problem. Some of badges may have the same factor of coolness. Help him and calculate how much money has to be paid for making all badges have different factors of coolness.
Input
First line of input consists of one integer n (1 ≤ n ≤ 3000).
Next line consists of n integers ai (1 ≤ ai ≤ n),
which stand for coolness factor of each badge.
Output
Output single integer — minimum amount of coins the colonel has to pay.
Sample test(s)
input
output
input
output
Note
In first sample test we can increase factor of first badge by 1.
In second sample test we can increase factors of the second and the third badge by 1.
解题说明:此题其实只要求通过加1,在最小步骤的情况下确保数字不重复,可以先统计每个数出现的次数,然后根据次数判断哪些数需要往上加1.即a[i]>1的情况,最后确保只有N个a[i]中有值,即N个不同的数。
#include <stdio.h>
int main()
{
int n,a[6001]={0};
int count,sum,k,i;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&k);
a[k]++;
}
sum=0;
count=0;
i=1;
while(sum!=n)
{
while(a[i]>1)
{
count++;
a[i]--;
a[i+1]++;
}
sum+=a[i];
i++;
}
printf("%d\n",count);
return 0;
}
3 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
Colonel has n badges. He wants to give one badge to every of his n soldiers.
Each badge has a coolness factor, which shows how much it's owner reached. Coolness factor can be increased by one for the cost of one coin.
For every pair of soldiers one of them should get a badge with strictly higher factor than the second one. Exact values of their factors aren't important, they just need to have distinct factors.
Colonel knows, which soldier is supposed to get which badge initially, but there is a problem. Some of badges may have the same factor of coolness. Help him and calculate how much money has to be paid for making all badges have different factors of coolness.
Input
First line of input consists of one integer n (1 ≤ n ≤ 3000).
Next line consists of n integers ai (1 ≤ ai ≤ n),
which stand for coolness factor of each badge.
Output
Output single integer — minimum amount of coins the colonel has to pay.
Sample test(s)
input
4 1 3 1 4
output
1
input
5 1 2 3 2 5
output
2
Note
In first sample test we can increase factor of first badge by 1.
In second sample test we can increase factors of the second and the third badge by 1.
解题说明:此题其实只要求通过加1,在最小步骤的情况下确保数字不重复,可以先统计每个数出现的次数,然后根据次数判断哪些数需要往上加1.即a[i]>1的情况,最后确保只有N个a[i]中有值,即N个不同的数。
#include <stdio.h>
int main()
{
int n,a[6001]={0};
int count,sum,k,i;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&k);
a[k]++;
}
sum=0;
count=0;
i=1;
while(sum!=n)
{
while(a[i]>1)
{
count++;
a[i]--;
a[i+1]++;
}
sum+=a[i];
i++;
}
printf("%d\n",count);
return 0;
}
相关文章推荐
- HeapAlloc与malloc的区别
- Redis 起步
- 错误error LNK2019: 无法解析的外部符号 _auxDIBImageLoadW@4
- [迅为开发板资料分享]分享一个迅为4412开发板OTG烧录批处理文件
- window下BitCoin的编译
- PHP学习之[第02讲]PHP5.4 Apache Mysql 搭配与多站点配置详解
- Listener介绍
- JVM参数设置、分析
- 虚析构函数
- android开发(43) 动画演示,会跑的小人,从屏幕左侧跑到右侧
- MD5加密以及产生唯一的ID
- Android 线性布局(LinearLayout)相关官方文档 - 参考部分
- 解决使用了subList方法之后MPAndroidChart不能显示数据的Bug
- ORA-01438: 值大于为此列指定的允许精度
- 多线程
- 初创团队的精细化分析和Growth Hacking
- Encoding
- 通过建立ssh信任,启动其他客户机的服务
- Centos 防火墙配置
- 遗传算法与TSP问题的MATLAB实现