| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 766 人关注过本帖
标题:有点看不懂,请各位大神帮我编一下
只看楼主 加入收藏
浪漫横行
Rank: 4
等 级:业余侠客
威 望:1
帖 子:127
专家分:291
注 册:2013-4-30
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:11 
有点看不懂,请各位大神帮我编一下
                所谓连续整数列, 指的是将含有n个整数的数列A中的所有整数重新从小到大排序以后得到的新的数列B, 满足, 对于任意正整数i, j(1 <= i, j <= n), 恒有Bj - Bi = j - i 。现在, 假定给你一个整数列C, 你需要求出将其变为连续数列所需花费的最小代价和。(将整数x变为整数y需要花费|x - y|的代价, 所谓代价和, 指的是改变所有数字所需花费的代价的总和)。
Input

输入的第一行有一个正整数n(1 <= n <= 100,000), 接下来的一行有n个整数Ci (1 <= i <= n, -1,000,000,000 <= Ci <= 1,000,000,000)。




Output

输出一个整数, 代表所需花费的最小代价和。




Sample Input

4
 4 1 5 2




Sample Output

2

[ 本帖最后由 浪漫横行 于 2013-5-10 20:37 编辑 ]
搜索更多相关主题的帖子: 正整数 
2013-05-10 20:13
锋了
Rank: 7Rank: 7Rank: 7
来 自:向日葵幼儿园
等 级:黑侠
威 望:2
帖 子:306
专家分:586
注 册:2012-10-27
收藏
得分:0 
。。。。
2013-05-10 20:18
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:0 
呵呵,你可以先自己做,然后让大家帮助你,但是这样的很少会得到帮助,从题目看,要用到排列算法,以及乘法运算的实现,等,你要自己进行实现哦

Maybe
2013-05-10 21:08
浪漫横行
Rank: 4
等 级:业余侠客
威 望:1
帖 子:127
专家分:291
注 册:2013-4-30
收藏
得分:0 
回复 3楼 邓士林
只是我看不懂这题,所以无法下手。。。“对于任意正整数i, j(1 <= i, j <= n), 恒有Bj - Bi = j - i 。”这句话什么意思

[ 本帖最后由 浪漫横行 于 2013-5-10 21:22 编辑 ]
2013-05-10 21:21
我叫沃恩
Rank: 12Rank: 12Rank: 12
来 自:Asia
等 级:贵宾
威 望:10
帖 子:1234
专家分:3865
注 册:2013-3-29
收藏
得分:0 
这是ACM题?

因为我是菜鸟,所以应该被骂! 细节+坚持=成功!
2013-05-10 21:33
helloUJS
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:168
专家分:731
注 册:2013-3-27
收藏
得分:20 
#include <stdio.h>
#include <math.h>
void sort(long a[],int n)
{
     int i,j,t;
     for(i=0;i<n-1;i++)
       for(j=i+1;j<n;j++)
          if(a[i]>a[j])
           {
              t=a[i];
              a[i]=a[j];
              a[j]=t;
           }
}
long sum(long a[],long c,int n)
{
     long s=0;
     int i;
     for(i=0;i<n;i++)
        s+=(long)fabs(a[i]-c-i);
     return s;
}
main()
{
      long a[100000],cost,minCost,c;
      int i,n;
      scanf("%d",&n);
      for(i=0;i<n;i++)
         scanf("%ld",&a[i]);
      sort(a,n);
      minCost=sum(a,a[0],n);
      for(c=a[0];c<=a[n-1]-n;c++)
        {
           cost=sum(a,c,n);
           if(cost<minCost)
              minCost=cost;
      }
      printf("%ld\n",minCost);
}
看看这个行不
2013-05-10 21:40
浪漫横行
Rank: 4
等 级:业余侠客
威 望:1
帖 子:127
专家分:291
注 册:2013-4-30
收藏
得分:0 
回复 5楼 我叫沃恩
乱找的


[ 本帖最后由 浪漫横行 于 2013-5-10 22:02 编辑 ]
2013-05-10 21:59
浪漫横行
Rank: 4
等 级:业余侠客
威 望:1
帖 子:127
专家分:291
注 册:2013-4-30
收藏
得分:0 
回复 6楼 helloUJS
系统测试为错误答案?
2013-05-10 22:46
helloUJS
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:168
专家分:731
注 册:2013-3-27
收藏
得分:0 
回复 8楼 浪漫横行
把数据类型改为long long 或者double试试

[ 本帖最后由 helloUJS 于 2013-5-10 23:06 编辑 ]
2013-05-10 22:56
浪漫横行
Rank: 4
等 级:业余侠客
威 望:1
帖 子:127
专家分:291
注 册:2013-4-30
收藏
得分:0 
回复 9楼 helloUJS
我改了,系统测试还是错误,可能是不符合要求吧,不过还是谢谢你,我再去和别人探讨一下。。。。
2013-05-11 12:27
快速回复:有点看不懂,请各位大神帮我编一下
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031656 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved