There are n trees planted in lxhgww's garden. You can assume that these trees are planted along the X-axis, and the coordinate of ith tree is xi.

But in recent days, lxhgww wants to move some of the trees to make them look more beautiful. lxhgww will recognize the trees as beautiful if and only if the distance between any adjacent trees is the same.
Now, lxhgww wants to know what is the minimum number of trees he need to move.
Just to be clear, after moving, there should still be n trees in the X-axis.
 

Input

The first line of the input contains a single integer T, which is the number of test cases.
For each case,
  • The first line contains an integers number n (1 ≤ n ≤ 40), representing the number of trees lxhgww planted;
  • The second line contains n integers numbers, the ith number represents xi. (-1000000000 ≤ xi ≤ 1000000000)
 

Output

For each case, first output the case number as "Case #x: ", and x is the case number. Then output a single number, representing the minimum number of trees lxhgww needs to move.

 

Sample Input

1
4
1 3 6 7
 

Sample Output

Case #1: 1
 

Source

 
 
题意是要用最少的次数改动给出的 N个数使得它成为等差数列。
比赛的时候就一直卡这题,应该是姿势不对,那时候的做法的枚举任意两个数,以他们的差值作为等差数列的d
 
正解是看kuangbin写的,枚举任意两个数,较小的数作为等差数列的首项,然后枚举 x[i],x[j] 所可能构成的 d ,
然后再查一下有多少个x[k]不属于这个等差数列(就是 N-属于的个数)。
 
 
#include <iostream>
#include <cstdio>
#include <map>
#include <algorithm>
#include <cstring> using namespace std;
typedef long long LL;
const int N= ;
int n;
LL x[N];
map<LL,int>mp;
LL gcd(LL a,LL b){return b==?a:gcd(b,a%b);} void run()
{
scanf("%d",&n);
for(int i=;i<n;++i){
scanf("%lld",&x[i]);
if(mp.find( x[i] ) == mp.end() ) mp[x[i]]=;
else mp[x[i]]++;
}
if( n <= ){ puts(""); return ; }
int ans=n-;
for(int i=;i<n;++i){
for(int j=i+;j<n;++j){
LL d=abs(x[j]-x[i]);
if(!d){
ans=min(ans,n-mp[x[j]]);
continue;
}
for(int k=;k<=n-;++k){
LL g=gcd((LL)k,d);
LL c=min(x[i],x[j]);
LL dis=k/g;
LL d2=d/g;
int cnt=;
for(int z=; z < n; z += dis){ //dis~~
if(mp.find(c) != mp.end()) cnt++;
c += d2;
}
ans = min(ans,n-cnt);
}
}
}
printf("%d\n",ans);
} int main()
{
//freopen("in.txt","r",stdin);
int cas=,_;
scanf("%d",&_);
while(_--){
mp.clear();
printf("Case #%d: ",cas++);
run();
}
return ;
}
 

2014 SummerTrain Beautiful Garden的更多相关文章

  1. bnu 34982 Beautiful Garden(暴力)

    题目链接:bnu 34982 Beautiful Garden 题目大意:给定一个长度为n的序列,问说最少移动多少点,使得序列成等差序列,点的位置能够为小数. 解题思路:算是纯暴力吧.枚举等差的起始和 ...

  2. 牛客多校第四场 F Beautiful Garden

    链接:https://www.nowcoder.com/acm/contest/142/F来源:牛客网 题目描述 There's a beautiful garden whose size is n ...

  3. BNUOJ 34982 Beautiful Garden

    BNUOJ 34982 Beautiful Garden 题目地址:BNUOJ 34982 题意:  看错题意纠结了好久... 在坐标轴上有一些树,如今要又一次排列这些树,使得相邻的树之间间距相等.  ...

  4. (第四场)F Beautiful Garden

    题目: F Beautiful Garden 题目描述 There's a beautiful garden whose size is n x m in Chiaki's house. The ga ...

  5. ACM程序设计选修课——1057: Beautiful Garden(模拟+耐心调试)

    1057: Beautiful Garden Time Limit: 5 Sec  Memory Limit: 128 MB Submit: 25  Solved: 12 [Submit][Statu ...

  6. 牛客网暑期ACM多校训练营(第四场) F Beautiful Garden

    链接: https://www.nowcoder.com/acm/contest/142/F 题意: n x m的矩形,选个p x q的矩形去掉,两个矩形中⼼重合,去掉后的矩形上下左右对称 求(p, ...

  7. 北京邀请赛 B. Beautiful Garden

    题意:给你坐标和n个点,求最少移动的点使得n个点成等差数列 思路:既然要成等差数列,那么最起码有两个点是不动的,然后枚举这两个点中间的点的个数,近期水的要死,看了队友的代码做的 #include &l ...

  8. 2014 ACM/ICPC 北京邀请赛 部分 题解

    题目链接:http://acm.bnu.edu.cn/bnuoj/problem.php?search=2014+ACM-ICPC+Beijing+Invitational+Programming+C ...

  9. HDU5977 Garden of Eden(树的点分治)

    题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5977 Description When God made the first man, he ...

随机推荐

  1. Sql中使用Case when

    SELECT CASE WHEN Column IS NOT NULL THEN '情况1' ELSE '情况2' END AS '列名' , FROM dbo.Table

  2. OA是Office Automation

    OA是Office Automation OA是Office Automation OA是Office Automation

  3. TP5+阿里云OSS上传文件第三节,实现淘宝上传商品图片

    **TP5+阿里云OSS上传文件第三节,实现淘宝上传商品图片首先我们来看看淘宝的功能和样式:** 之后看看制作完成的演示:(由于全部功能弄成GIF有点大,限制上传大小好像在1M之内,压缩之后也有1.9 ...

  4. 一次Oday提权批量拿取商城服务器root权限

    此问题影响范围巨大,涉及到所有通过niushop开发的商城,希望通过这篇文章能够引起大家的重视.(注:演示的所用商城已经修复了此漏洞) 严重性:特级 解决方案:1.在用户访问漏洞页时对其身份进行判断: ...

  5. redis心得体会

    redis简介: 在我们日常的Java Web开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题,可是一旦涉及大数据量的需求,比如一 ...

  6. matplotlib.pyplot 包

    import matplotlib.pyplot as plt 图片的打开和保存: from PIL import Image img=Image.open('....') img.save('... ...

  7. UE4开发PSVR游戏流程

    先与sony的开发者关系部建立联系,展示工作室/公司制作PSVR游戏的构想和计划以及制作实力,如果对方觉得你提供的信息具有说服力,则会提供开发者资格,和你签署NDA,给你租借开发机和测试机(免费). ...

  8. JavaScript原型和闭包学习笔记

    在这里先和大家推荐一个博客,这博客的<深入理解javascript原型和闭包(完结)>系列,看了比较多的视频和书本,这个博客讲得很耐人寻味. 深入理解javascript原型和闭包(完结) ...

  9. 音悦台 api分析

    用户订阅MV更新 http://uapi.yinyuetai.com/i/flw/subscribe-video-list?page=1&pageSize=200&uid=XXXXXX ...

  10. python中用os.walk查找全部的子文件

    import os import shutil # 要遍历查找的文件所在的父文件夹 trajectory_filename =r"D:\mapping" # 要粘贴到的目标文件夹 ...