B. Rectangle and Square

题目连接:

http://codeforces.com/contest/135/problem/B

Description

Little Petya very much likes rectangles and especially squares. Recently he has received 8 points on the plane as a gift from his mother. The points are pairwise distinct. Petya decided to split them into two sets each containing 4 points so that the points from the first set lay at the vertexes of some square and the points from the second set lay at the vertexes of a rectangle. Each point of initial 8 should belong to exactly one set. It is acceptable for a rectangle from the second set was also a square. If there are several partitions, Petya will be satisfied by any of them. Help him find such partition. Note that the rectangle and the square from the partition should have non-zero areas. The sides of the figures do not have to be parallel to the coordinate axes, though it might be the case.

Input

You are given 8 pairs of integers, a pair per line — the coordinates of the points Petya has. The absolute value of all coordinates does not exceed 104. It is guaranteed that no two points coincide.

Output

Print in the first output line "YES" (without the quotes), if the desired partition exists. In the second line output 4 space-separated numbers — point indexes from the input, which lie at the vertexes of the square. The points are numbered starting from 1. The numbers can be printed in any order. In the third line print the indexes of points lying at the vertexes of a rectangle in the similar format. All printed numbers should be pairwise distinct.

If the required partition does not exist, the first line should contain the word "NO" (without the quotes), after which no output is needed.

Sample Input

xudyhduxyz

0 0

10 11

10 0

0 11

1 1

2 2

2 1

1 2

Sample Output

YES

5 6 7 8

1 2 3 4

题意

给你8个点,你需要分成2个set,使得左边那个set里面的点构成正方形,右边那个set里面的点构成长方形

问你可不可以,如果可以输出方案

题解:

只有8个点,直接暴力就好了……

判断直角,就直接点积就好了

代码

#include<bits/stdc++.h>
using namespace std;
const double eps = 1e-6;
double a[10],b[10];
vector<int>tmp,ans1,ans2;
double dis(int x,int y)
{
return (a[x]-a[y])*(a[x]-a[y])+(b[x]-b[y])*(b[x]-b[y]);
}
double pointx(int x,int y,int z)
{
double x1=a[y]-a[x],y1=b[y]-b[x];
double x2=a[z]-a[x],y2=b[z]-b[x];
return x1*x2+y1*y2;
}
bool check()
{
double len[4];
for(int i=0;i<4;i++)len[i]=dis(tmp[i],tmp[(i+1)%4]);
for(int i=0;i<4;i++)for(int j=0;j<4;j++)if(fabs(len[i]-len[j])>eps)return false;
if(fabs(pointx(tmp[0],tmp[1],tmp[3]))>eps)return false;
if(fabs(pointx(tmp[1],tmp[0],tmp[2]))>eps)return false;
if(fabs(pointx(tmp[2],tmp[1],tmp[3]))>eps)return false;
if(fabs(pointx(tmp[3],tmp[2],tmp[0]))>eps)return false; for(int i=0;i<4;i++)len[i]=dis(tmp[i+4],tmp[(i+1)%4+4]);
if(fabs(len[0]-len[2])>eps)return false;
if(fabs(len[1]-len[3])>eps)return false; if(fabs(pointx(tmp[4],tmp[5],tmp[7]))>eps)return false;
if(fabs(pointx(tmp[5],tmp[4],tmp[6]))>eps)return false;
if(fabs(pointx(tmp[6],tmp[5],tmp[7]))>eps)return false;
if(fabs(pointx(tmp[7],tmp[6],tmp[4]))>eps)return false; return true;
}
int main()
{
for(int i=0;i<8;i++)
{
scanf("%lf%lf",&a[i],&b[i]);
tmp.push_back(i);
}
do{
if(check())
{
printf("YES\n");
for(int i=0;i<4;i++)cout<<tmp[i]+1<<" ";
printf("\n");
for(int i=4;i<8;i++)cout<<tmp[i]+1<<" ";
return 0;
}
}while(next_permutation(tmp.begin(),tmp.end()));
printf("NO\n");
}

Codeforces Beta Round #97 (Div. 1) B. Rectangle and Square 暴力的更多相关文章

  1. Codeforces Beta Round #97 (Div. 1) C. Zero-One 数学

    C. Zero-One 题目连接: http://codeforces.com/contest/135/problem/C Description Little Petya very much lik ...

  2. Codeforces Beta Round #97 (Div. 1) A. Replacement 水题

    A. Replacement 题目连接: http://codeforces.com/contest/135/problem/A Description Little Petya very much ...

  3. Codeforces Beta Round #97 (Div. 1)

    B 判矩阵的时候 出了点错 根据点积判垂直 叉积判平行 面积不能为0 #include <iostream> #include<cstdio> #include<cstr ...

  4. Codeforces Beta Round #97 (Div. 2)

    A题求给出映射的反射,水题 #include <cstdio> int x,ans[105],n; int main(){ scanf("%d",&n); fo ...

  5. Codeforces Beta Round #92 (Div. 1 Only) A. Prime Permutation 暴力

    A. Prime Permutation 题目连接: http://www.codeforces.com/contest/123/problem/A Description You are given ...

  6. Codeforces Beta Round #4 (Div. 2 Only) A. Watermelon【暴力/数学/只有偶数才能分解为两个偶数】

    time limit per test 1 second memory limit per test 64 megabytes input standard input output standard ...

  7. Codeforces Beta Round #80 (Div. 2 Only)【ABCD】

    Codeforces Beta Round #80 (Div. 2 Only) A Blackjack1 题意 一共52张扑克,A代表1或者11,2-10表示自己的数字,其他都表示10 现在你已经有一 ...

  8. Codeforces Beta Round #83 (Div. 1 Only)题解【ABCD】

    Codeforces Beta Round #83 (Div. 1 Only) A. Dorm Water Supply 题意 给你一个n点m边的图,保证每个点的入度和出度最多为1 如果这个点入度为0 ...

  9. Codeforces Beta Round #79 (Div. 2 Only)

    Codeforces Beta Round #79 (Div. 2 Only) http://codeforces.com/contest/102 A #include<bits/stdc++. ...

随机推荐

  1. TcxScheduler的使用

    TcxScheduler有两种工作模式: 一.非绑定模式 非绑定模式下,数据被存储在文件系统中.要让scheduler工作在非绑定模式下,应使TcxScheduler.Storage属性绑定到TcxS ...

  2. 超简单的qps统计方法(推荐)【转】

    统计最近N秒内的QPS值(包括每秒select,insert等值) mysql> select variable_name,sum(per_sec) as qps from (select st ...

  3. json的用法

    json格式 JSON格式:http://www.json.org/ python和JSON的关系请参考:http://docs.python.org/library/json.html JSON建构 ...

  4. 常见四大类型视频接线DP、HDMI、DVI、VGA的比较

    如今是新的“视”界,生活中总与各种屏幕打交道,难免会遇到选择视频接线的问题,要想搞清楚这点,我们只要通过了解现今常用的几种视频接线就会有个大致的认识.   281VGA.DVI.HDMI三种视频信号接 ...

  5. 利用Metrics+influxdb+grafana构建监控平台

    https://blog.csdn.net/fishmai/article/details/51817429

  6. Android Studio3.x新的依赖方式(implementation、api、compileOnly)

    https://blog.csdn.net/yuzhiqiang_1993/article/details/78366985?locationNum=6&fps=1 Android Studi ...

  7. iOS模块器截屏闪退

    最近不知道什么原因,iOS模块器截屏命令点击模拟器就闪退,在此记录下在命令行截屏操作: 第一步:打开对应的模拟器 第二步:模拟器缩放比为100% 第三步:输入以下命令,001.jpg为要保存的文件名  ...

  8. 【POJ】2454.Jersey Politics

    题解 有种迷一样的讽刺效果 每个城市有1000头牛,然后你现在知道对于自己政党每个城市的选票,把城市划分成三个州,保证在至少两个州内获胜 找出前2K大的然后random_shuffle,直到前K个加起 ...

  9. Kibana安装及简单使用

    Kibana安装 参照官方文档即可,这里只做相关操作记录: wget https://artifacts.elastic.co/downloads/kibana/kibana-5.5.0-linux- ...

  10. 二、 sql*plus常用命令

    一.sys用户和system用户Oracle安装会自动的生成sys用户和system用户(1).sys用户是超级用户,具有最高权限,具有sysdba角色,有create database的权限,该用户 ...