网络同步赛——猜猜谁是我
来源:互联网 发布:linux命令大全下载 编辑:程序博客网 时间:2024/04/30 23:59
猜猜谁是我
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 0 Accepted Submission(s): 0
Problem Description
女神YSJ给Martin发了一个视频。“猜猜里面哪个是我。” 女神说。
作为一个脸盲,再加上多年不见,Martin已经完全不知道女神长成了什么样子,他表示完全认不出来。
好在Martin手上还有一张YSJ小时候的照片,他可以拿照片和视频里的人进行特征比对,从而找出女神。
为了简化问题,我们将YSJ小时候的脸表示成一个800行800列的矩阵,然后给出眼睛、鼻子、嘴巴的中心在脸上的坐标,全部用整数表示。视频中的其他人也都按照这个方式表示,截取正脸并且缩放到800x800以减小误差,输入不保证符合实际(例如不保证眼睛在鼻子的上方,鼻子在嘴巴上方blahblah。。)
Martin进行特征比对的方式相当简单粗暴:眼睛、鼻子、嘴巴中心和YSJ小时候照片的欧氏距离总和最小的就是女神。
YSJ小时候的脸部特征描述如下, 分别表示左眼、右眼、鼻子、嘴巴的中心在图中的位置(参见输入描述):
200 200
200 600
450 400
700 400
但是Martin的编程水平已经和他的表达能力一样烂到一定境界了,所以他希望聪明的你能够帮帮他。
作为一个脸盲,再加上多年不见,Martin已经完全不知道女神长成了什么样子,他表示完全认不出来。
好在Martin手上还有一张YSJ小时候的照片,他可以拿照片和视频里的人进行特征比对,从而找出女神。
为了简化问题,我们将YSJ小时候的脸表示成一个800行800列的矩阵,然后给出眼睛、鼻子、嘴巴的中心在脸上的坐标,全部用整数表示。视频中的其他人也都按照这个方式表示,截取正脸并且缩放到800x800以减小误差,输入不保证符合实际(例如不保证眼睛在鼻子的上方,鼻子在嘴巴上方blahblah。。)
Martin进行特征比对的方式相当简单粗暴:眼睛、鼻子、嘴巴中心和YSJ小时候照片的欧氏距离总和最小的就是女神。
YSJ小时候的脸部特征描述如下, 分别表示左眼、右眼、鼻子、嘴巴的中心在图中的位置(参见输入描述):
200 200
200 600
450 400
700 400
但是Martin的编程水平已经和他的表达能力一样烂到一定境界了,所以他希望聪明的你能够帮帮他。
Input
多组数据。每个人的人脸特征都用4行表示,每行两个整数x,y(0<=x,y<800) 分别表示左眼、右眼、鼻子、嘴巴的中心在图中的位置。。每一组数据先给出n (0< n<1000),表示视频中出现的脸的个数,编号从1-n,接着的n*4行给出每张脸的描述。
Output
对于每组数据,输出最可能是女神的脸的编号,如果有多张人脸符合要求,输出编号最小的,单独一行。
Sample Input
3201 201200 600450 400700 400201 200200 600450 400700 400200 201200 600450 400700 400
Sample Output
2Hint欧氏距离就是两个点的直线距离
解题思路:本题是一道简单题,已经给出了女神的五官的具体坐标,只需要将输入的数据求一下直线距离,求一下和,随时做一下比较,记下编号即可;同上一道网络同步赛的题目一样,我将求欧式距离的公式写成了单独的函数;
以下是代码:
#include<stdio.h>#include<math.h>double juli(int a,int b, int x, int y);int main(){ int t; while(~scanf("%d", &t)) { int flag; double min = 2147483647; for(int i = 1; i <= t; i++) { int a,b,c,d,e,f,g,h; scanf("%d%d%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f,&g,&h); double m, n, p, q; m = juli(a,b,200,200); n = juli(c,d,200,600); p = juli(e,f,450,400); q = juli(g,h,700,400); double sum = m+n+p+q; if(min > sum) { min = sum; flag = i; } } printf("%d\n", flag); } return 0;}double juli(int a,int b, int x, int y){ return sqrt((a-x)*(a-x)+(b-y)*(b-y));}
0 0
- 网络同步赛——猜猜谁是我
- 猜猜谁是我
- 猜猜谁是我
- 猜猜谁是我
- 猜猜谁是我
- 浙江工业大学校赛 猜猜谁是我
- HDU 猜猜谁是我 两点间距离公式
- 让我猜猜结局
- 56 猜猜我是谁
- 小游戏——猜猜你的生日
- 猜猜......
- BOOST ASIO改错题——猜猜错误在哪里
- 文件基础应用-52.猜猜我是谁
- 猜猜我在想什么(RadioButtonID)
- 读《猜猜我有多爱你》画册
- 谁是我的客户?
- 谁是我的伯乐
- 谁是我的接班人?
- 猜猜谁是我
- SCU4487 king's trouble I(深搜DFS)
- [省选] [树链剖分] [BZOJ2243] [SDOI2011] 染色
- struts2学习
- 剑指offer学习笔记(Java实现)(26-30)
- 网络同步赛——猜猜谁是我
- 初始容量问题
- 算年龄
- Unity OnBecameVisible 与 OnBecameInvisible 用法
- 大话设计模式之设计模式的六大原则
- Codeforces Round #358 (Div. 2) D. Alyona and Strings dp
- (1)算法学习-递归法
- 信息奥赛 回文数
- Unity Shader 知识点总结(二)