1397. 寻找星座

题目描述
现在你在一张卫星图片中寻找星座,已知该星座在图片中正好出现一次,而且形状一样,方向一样,大小也一样。注意图片中可能有一些与该星座无关的星星。

例如图1中的星座出现在图2的卫星图片中(用圆圈标识部分)。图1中给定的星座需要在X轴上平移2个单位同时在y轴上平移-3个单位才能与卫星图片中的卫星正好吻合。 写一个程序,计算给定星座的星星需要在X和Y方向上分别平移多少单位才能与卫星图片吻合。

输入
第1行:一个整数M,表示需要寻找的星座中星星的数量;

第2…M+1行:每行两个用空格隔开的整数表示这M个星星的坐标;

第M+2行:一个整数N,表示卫星图片中星星的数量。

第M+3…M+N+2行:每行两个整数表示图片中星星的坐标。 注意:星座和卫星图片中任意两个星星都不重叠;1<=M<=200,1<=N<=1000,X,Y坐标值范围为0…1000000。

输出
输出一行,两个用空格隔开的整数dx,dy,表示需要在X,Y方向上平移的单位。

样例输入
样例输入1:

5
8 5
6 4
4 3
7 10
0 10
10
10 5
2 7
9 7
8 10
10 2
1 2
8 1
6 7
6 0
0 9

样例输入2:

5
904207 809784
845370 244806
499091 59863
638406 182509
435076 362268
10
757559 866424
114810 239537
519926 989458
461089 424480
674361 448440
81851 150384
459107 795405
299682 6700
254125 362183
50795 541942

样例输出
样例输出1:

2 -3

样例输出2:

-384281 179674

思路:
我们先求出在星座中每两个相邻的星星的相对距离(dx[i],dy[i])。当然我们要对星座和卫星图做一次排序(以x为第一关键字(从小到大),以y为第二关键字(从小到大))。

接下来我们枚举卫星图的每颗星星作为星座第一颗,以dx[],dy[]作为搜索条件,去判断是否能找到一个相吻合的星座。在深搜的过程中,可以做一个剪枝:只要当前两颗星星的相对的x距离大于dx[],跳出!

#include<cstdio>
#include<iostream>
#include<cmath>
#include<cstring>
#include<string>
#include<algorithm>
#include<vector>
#define fre(x) freopen(#x".in","r",stdin),freopen(#x".out","w",stdout);
using namespace std;
const int MAX=2147483647;
const int N=1e6;
struct node
{int x,y;
} p[1010],p1[1010];
int m,n,dx[1010],dy[1010];
bool cmp(node a,node b)
{if(a.x==b.x) return a.y<b.y;return a.x<b.x;
}
void dfs(int x,int y,int step,int sx,int sy,int st)
{if(step==m){printf("%d %d\n",sx-p[1].x,sy-p[1].y);exit(0); }for(int i=st;i<=n;i++){if(p1[i].x-x==dx[step]&&p1[i].y-y==dy[step]) dfs(p1[i].x,p1[i].y,step+1,sx,sy,i);if(p1[i].x-x>dx[step]) return;}
}
int main()
{//fre();scanf("%d",&m);for(int i=1;i<=m;i++) scanf("%d%d",&p[i].x,&p[i].y);sort(p+1,p+1+m,cmp);for(int i=2;i<=m;i++) dx[i-1]=p[i].x-p[i-1].x,dy[i-1]=p[i].y-p[i-1].y;scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%d%d",&p1[i].x,&p1[i].y);sort(p1+1,p1+1+n,cmp);for(int i=1;i<=n;i++) dfs(p1[i].x,p1[i].y,1,p1[i].x,p1[i].y,i);return 0;
}

1397. 寻找星座相关推荐

  1. 【纪中20200606】寻找星座

    寻找星座 题目描述 现在你在一张卫星图片中寻找星座,已知该星座在图片中正好出现一次,而且形状一样,方向一样,大小也一样.注意图片中可能有一些与该星座无关的星星. 例如图1中的星座出现在图2的卫星图片中 ...

  2. 二月星座运势之射手座:勇敢冒险 寻找新的体验和发现

    射手座的人通常是勇敢.自信和乐观的,他们追求自由和独立,喜欢冒险和探索.他们渴望新鲜感和刺激,喜欢寻找新的体验和发现. 对于射手座的人来说,世界充满了未知和神秘,他们总是怀着好奇心和冒险精神,愿意尝试 ...

  3. python snmp采集交换机信息_Python采集12星座信息,分析出12星座的各个特点

    一个微博热搜引发的故事 一.故事从这里开始 二.搞事情第一步:搜集图片 三.搞事情第二步:展示图片 四.搞事情第三步:推广链接 五.搞事情第四步:统计分析 1.数据处理2.数据筛选3.统计各天的频率4 ...

  4. 2006年星座运势全解-射手

    射手座 关键字:节制年 吉祥物:浅紫色内衣 认识射手座: 射手座的守护是木星,守护神是宙斯,所以射手座的人乐观.诚实.热情,喜欢挑战,不过很容易浮躁不安,鲁莽行事.他是十二星座的冒险家,热爱旅行,喜欢 ...

  5. 十二星座物语,女生最喜欢的星座性格【1】

    @[TOC]十二星座物语,女生最喜欢的星座性格(这里写自定义目录标题) 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页.如果你想学习如何使用Markd ...

  6. python十二星座符号_12种编程语言类比12星座女

    PS:这篇博文是一个技术群的码农写的,这哥们真有才,根据我对星座的看法,比喻得很靠谱,特转如下: 计算机语言的实质其实是为了让人类能够更好与计算机打交道,最终结果都是通过编译成二进制代码或通过解释器转 ...

  7. 2006年星座运势 天蝎座

    2006年星座运势 > 天蝎座 (10月23 日至11月21日) > > 枕戈待旦,充电再出发的转折年 > > 2006年对主运落在回顾宫的蝎子座而言,将是暂时放缓节奏, ...

  8. 不能有比这个再靠谱的星座分析了

    1摩羯2水瓶3双鱼4白羊5金牛6双子7巨蟹8狮子9处女10天枰11天蝎12射手 一 摩羯座 12月22日-1月19日 魔羯给人外表感觉很冷漠,其实内心是火热的,很善良,不容易拒绝别人, 尤其是自己看重 ...

  9. python打印输出12星座_Python采集12星座信息,分析出12星座的各个特点

    一个微博热搜引发的故事一.故事从这里开始 二.搞事情第一步:搜集图片 三.搞事情第二步:展示图片 四.搞事情第三步:推广链接 五.搞事情第四步:统计分析 1.数据处理2.数据筛选3.统计各天的频率4. ...

最新文章

  1. golang 实现 while 和 do……while 循环
  2. pandorabox php7,【恐惧交响4之潘多拉】ProjectSAM Symphobia 4 Pandora v1.0.7
  3. mac安装brew(亲测有效)
  4. 苹果截屏快捷键_新手小白用苹果电脑搞科研,学会这些才不至于尴尬!
  5. C# PrintDocument 打印表格
  6. 除去数组中的空字符元素array_filter()
  7. NVIDIA发布先进的软件定义自主机器平台DRIVE AGX Orin
  8. SQL安装文件挂起解决方法
  9. 【DataMagic】如何在万亿级别规模的数据量上使用Spark
  10. 笔记:复杂度分析(上)
  11. 品优影视建站系统1.3.6.5开源绿色版
  12. 通过Web界面访问华为USG6000防火墙+安全策略
  13. linux 根目录设置777,linux 把根目录设置成777权限的补救方法
  14. android时光轴相册,Android之RecyclerView实现时光轴效果示例
  15. TFT LCD显示屏在阳光下可读
  16. pull request 时遇到 conflicted 的解决方法
  17. [BZOJ2298]problem a
  18. IDEA Intellij小技巧和插件
  19. 使用selenium模块自动打开淘宝并进行搜索
  20. -xms -xmx无效

热门文章

  1. FFmpeg+libmp3lame库源码Linux安装教程(centosarm7.6)
  2. win7系统thumbs.db文件怎么彻底删除
  3. SRTM、ASTER GDEM等全球数字高程数据(DEM)下载方式简介
  4. com.mongodb.MongoSocketReadTimeoutException: Timeout while receiving message
  5. YOLOv8 Ultralytics:最先进的 YOLO 模型——简介+实战教程
  6. 进行网站建设必须要掌握的基础知识
  7. PBI数据分析实战:场地类数据分析
  8. 2023全国普通高校大学生竞赛目录
  9. 合肥计算机学校 吕子立,合肥理工学校校长张良平一行到皖北经济技术学校考察调研...
  10. Lua中的pairs们(pairs,ipairs,gmatch)