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; }
相关文章推荐
- Linux下which、whereis、locate、find 区别
- 混合高斯模型算法
- Python capitalize()方法
- 指代消解系列(1)-综述
- 玩转linux主机--hadoop伪分布式配置及单词计数程序的运行
- 运行时 动态获取成员变量
- 使用FileUtils实现一个简易文件下载器
- Java反射需要注意的地方
- 洛谷P1039
- IO-字符输入流
- ios宏定义的参数 编译可以通过,但是提示有错误
- 【C++】子对象基础概念及其用法
- 我的ubuntu配置
- Openstack liberty中nova-compute服务的启动过程
- [bzoj2751][HAOI2012]容易题(easy)
- 技术培训 | RAC 宕机罪犯案情探析之子游标
- vhost device still attached , ovs crash bug fix
- Cocos2d-Lua之table
- UNIX环境高级编程-4.11-4.16
- 美食节