第一次比赛的 C题 (好后面才补的....) CodeForces 546B

Description

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 Input

Input

4 1 3 1 4

Output

1

Input

5 1 2 3 2 5

Output

2

Hint

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.

题意:给一串数字,使得他们每个都不一样,需要增加几....

题解;先输入的时候算出和,然后排序,接下来循环,如果后一个等于前一个,a[i]++,如果前一个大于后一个,a[i]加上前一个减去后一个的再加上1,这样,他就不会个前面的相等.....

最后把他们的和算出来,求两个和的差就是答案...

代码如下:

 1 #include <stdio.h>
 2 #include <algorithm>
 3 #include <string.h>
 4 using namespace std;
 5 int a[3005];
 6 int main()
 7 {
 8     int n;
 9     while(scanf("%d",&n)==1)
10     {
11         int sum1=0,sum2=0;
12         for(int i=1;i<=n;i++)
13         {
14             scanf("%d",&a[i]);
15             sum1+=a[i];
16         }
17         sort(a+1,a+n+1);
18         sum2=a[1];
19         for(int i=2;i<=n;i++)
20         {
21             if(a[i]==a[i-1])
22                 a[i]++;
23             else if(a[i]<a[i-1])
24                 a[i]+=a[i-1]-a[i]+1;
25             sum2+=a[i];
26         }
27         printf("%d\n",sum2-sum1);
28     }
29     return 0;
30 }
时间: 2024-12-10 23:41:26

第一次比赛的 C题 (好后面才补的....) CodeForces 546B的相关文章

四川大学线下编程比赛第三题:书本转移

好久没写过日志,也怪最近事情真的特别多,最近参加关于编程方面就是CSDN高校俱乐部举办的线下编程塞,说起这次编程赛,总共三道题,题目都可以在csdn高校俱乐部上看到,参加比赛的时候有点小紧张,第三题涉及到队列,当时的机器没有代码提示,坑...也怨自己平时写代码用惯了代码提示,很多stl的方法都是隐隐约约知道,但是具体的不知道,导致第三题没有做出来,遗憾哈!下面贴一下今天写的第三题的代码 题目 四川大学线下编程比赛第三题:书本转移 题目详情: 小强有 3 个箱子 A,B,C 用来装书,所有的书(一

MSC阿里比赛第三题详解

第三题的分析过程 图/文 听鬼哥说故事 这道题想起来上次阿里的比赛的ali400.apk,虽然没参加,不过看到过网上的几篇分析文章. 第三题主要是壳子方面的问题,脱壳,再分析看看核心代码在java层还是so层即可. 文章写的详细了点,可以留给初学者参考使用. 详细还是查看文档吧,非常详细的调试过程和思路: 链接:http://pan.baidu.com/s/1bnpkWzl 密码:roii

hdu 1072 Nightmare BFS,第一次刷BFS的题,感好牛逼的。。。

Nightmare Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 7758    Accepted Submission(s): 3723 Problem Description Ignatius had a nightmare last night. He found himself in a labyrinth with a ti

第五次比赛的水题

Description Andrewid the Android is a galaxy-famous detective. In his free time he likes to think about strings containing zeros and ones. Once he thought about a string of length n consisting of zeroes and ones. Consider the following operation: we

欢乐暑假线上编程比赛第四题:分配糖果

在csdn上看到这么个题目,与友友们一起分享下,如果有别的做法,也希望能拿出来交流交流. 题目详情 有n个小朋友站成一排(编号从0到n-1),每个小朋友有一个rating值,存放在ratings数组中.老师需要给他们分 配糖果,每个小朋友至少需要一颗糖果,对于任意相邻的两个小朋友i和i+1,rating值大的必须比rating值小的分 配的糖果多(rating相同的没必要分配一样多的糖果). 请计算最少需要多少颗糖果,才能完成上述分配. 输入格式: 多组数据,每组数据第一行是一个正整数n. 接下

差分模版题(需理解才明白)AT2442 フェーン現象 (Foehn Phenomena)

https://www.luogu.org/problemnew/show/AT2442 1 #include <bits/stdc++.h> 2 #define read read() 3 #define up(i,l,r) for(register int i = (l);i <= (r);i++) 4 #define down(i,l,r) for(register int i = (l);i >= (r);i--) 5 #define traversal_vedge(i)

关于第一次考核的错题分析

本次考核我自己还是单选题错的比较多,主要集中在法律法规方面差的还比较多,所以针对自己做错的题目自己查了一下资料,针对学习了一下. 反掩码就是通配符,通过标记0和1告诉设备应该匹配到哪位.在反掩码中,相应位为1的地址在比较中忽略,为0的必须被检查.IP地址与反掩码都是32位的数 由于跟子网掩码刚好相反,所以也叫反掩码 . 例如掩码是255.255.255.0 , wildcard-mask 就是0.0.0.255 , 255.255.255.248 , 反掩码就是0.0.0.7. 可以看到这道题中

sdut oj 1163 C语言实验——排列 (当初不会递归生成排列,这个题目现在才补上 刘汝佳给出了写法 *【模板】 当然有生成全排列的函数存在 )

C语言实验——排列 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 有4个互不相同的数字,请按序输出由其中三个不重复数字组成的排列. 输入 4个整数. 输出 所有排列,输出顺序见样例. 示例输入 1 2 3 4 示例输出 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 1 2 4 1 4 2 2 1 4 2 4 1 4 1 2 4 2 1 1 3 4 1 4 3 3 1 4 3 4 1 4 1 3 4

A题之字符串末尾补0

按要求分解字符串,输入两个数M,N:M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0.例如:输入2,8, "abc" ,"123456789",则输出为"abc00000","12345. 678","90000000" 思路: 1)对每一个字符串的长度取模length%N,在字符串末尾补(N-length%N)个0 2)将所有字符串补0后的字符串拼接在一起 3)拼接后的字符串按照M长度,分段