您的位置:首页 > 其它

CodeForces 546B-Soldier and Badges

2016-06-16 20:47 495 查看
题意:
  给出一些数字,要求每个数字都不一样需要增加几

思路:
  先排序,然后一个个增加,最后求总和差

代码如下:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <fstream>
#include <cmath>
#include <ctime>
#include <cstdlib>
#include <algorithm>
#include <set>
#include <map>
#include <list>
#include <stack>
#include <queue>
#include <iterator>
#include <vector>

using namespace std;

#define LL long long
#define INF 0x3f3f3f3f
#define MOD 1000000007
#define MAXN 10000010
#define MAXM 1000010

const int maxm = 3005;
int a[maxm];

//方法一:

int main()
{
int n;
int sum;
while(scanf("%d", &n)==1&&n)
{
memset(a, 0, sizeof(a));
int i;
pos = 0;
for(i = 0; i < n; i++ )
scanf("%d", &a[i]);
sort(a, a+n);
for(i = 1; i < n; i++ )
{
while(a[i] <= a[i-1])
{
a[i] += 1;
sum += 1;
}
}
printf("%d\n", sum);
}

return 0;
}

//方法二:

int main()
{
int n;
while(scanf("%d", &n) == 1)
{
memset(a, 0, sizeof(a));
int sum1 = 0, sum2 = 0;
for(int i = 1; i <= n; i++ )
{
scanf("%d", &a[i]);
sum1 += a[i];
}
sort(a+1, a+n+1);
sum2 = a[1];
for(int i = 2; i <= n; i++ )
{
if(a[i] == a[i-1])
a[i]++;
else if(a[i] < a[i-1])
a[i] = a[i-1] + 1;
sum2 += a[i];
}
printf("%d\n", sum2 - sum1);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: