ACM | HDU|6227_Rabbit

 

 
 
 
题意:
    有n只兔子分别占据不同的位置,任意一只兔子可以插入任意两只兔子的之间,但要求两只兔子之间要有空位,求这样的移动次数最多能够有多少?
 
在这里每一只兔子没有区别,可以看做把最左端或者最右端的兔子放入中间的插空,从左到右或者从右到左,就可以得到移动的最多次数了。一句话,就是先把所有两只兔子之间的距离叠加起来,再去减去min(最左端的两只兔子的距离,最右端的两只兔子的距离)。
 
复制代码
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     int t,n,ans;
 7     int position[5005];
 8     while(~scanf("%d",&t)) {
 9         while(t--)
10         {
11             scanf("%d",&n);
12             ans = 0;
13             for(int i = 0; i < n; i++)
14                 scanf("%d",&position[i]);
15             for(int i = 1; i < n; i++)
16                 ans += (position[i] - position[i-1]-1);
17             
18             ans -= min(position[1] - position[0]-1,position[n-1] - position[n-2]-1);
19             cout<<ans<<endl;    
20         }
21         
22     }
23 
24     return 0;
25 }
复制代码

 

posted @   听说这是最长的名字了  阅读(305)  评论(0编辑  收藏  举报
编辑推荐:
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· 你所不知道的 C/C++ 宏知识
阅读排行:
· 不到万不得已,千万不要去外包
· C# WebAPI 插件热插拔(持续更新中)
· 会议真的有必要吗?我们产品开发9年了,但从来没开过会
· 【译】我们最喜欢的2024年的 Visual Studio 新功能
· 如何打造一个高并发系统?

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示