码迷,mamicode.com
首页 > 其他好文 > 详细

CodeForces 546B - Soldier and Badges

时间:2015-05-27 10:01:47      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:acm   codeforces   

题目链接click here~~

题目大意】给你一个整数(1?≤?n?≤?3000)序列,求操作的最少步骤使得序列里没有相同的数,

解题思路】昨天想到一个可行的巧妙的方法:输入之后排序,然后依次判断一下,初始化last=-1,判断完之后
每次把最大的数更新为last,否则累加++last减去当期值的差, 

 #include <bits/stdc++.h>
 using namespace std;
 const int N=1e4;
 int num[N];
 int main()
 {
     int n;
     scanf("%d",&n);
     for(int i=0;i<n;i++) scanf("%d",&num[i]);
     sort(num,num+n);
     int last=-1,res=0;
     for(int i=0;i<n;i++)
     {
         if(num[i]>last) last=num[i];
         else res+=++last-num[i];
     }
     printf("%d\n",res);
     return 0;
 }


CodeForces 546B - Soldier and Badges

标签:acm   codeforces   

原文地址:http://blog.csdn.net/u013050857/article/details/46042553

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!