hdoj5563(简单几何)
笑死我了,居然一遍就过了。
题意:给你5个点,让你判断能否组成一个五角星;
思路:
利用对称性,应该有很多种方法。弱打的很麻烦。但是那个两点式公式去判断另外一个点是否在一条直线上的那个判断,还是蛮喜欢的
double dd=(double)(xx[i]-onex)/(twox-onex)-(double)(yy[i]-oney)/(twoy-oney);
然后根据题目要求,去使用dd
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <algorithm>
#include <iostream>
using namespace std;
#define MAX 110
#define ll __int64
#define mod 9973
#define N 1010
double x[10];
double y[10];
double xx[10];
double yy[10];
bool vis[10];
int solve()
{
double onex,oney;
double twox,twoy;
double k,b;
for(int i=1;i<=5;i++)
{
if(i==1)
{
onex=(xx[2]+xx[5])*0.5;
oney=(yy[2]+yy[5])*0.5;
twox=(xx[3]+xx[4])*0.5;
twoy=(yy[3]+yy[4])*0.5;
}
else if(i==2)
{
onex=(xx[1]+xx[3])*0.5;
oney=(yy[1]+yy[3])*0.5;
twox=(xx[5]+xx[4])*0.5;
twoy=(yy[5]+yy[4])*0.5;
}
else if(i==3)
{
onex=(xx[2]+xx[4])*0.5;
oney=(yy[2]+yy[4])*0.5;
twox=(xx[5]+xx[1])*0.5;
twoy=(yy[5]+yy[1])*0.5;
}
else if(i==4)
{
onex=(xx[3]+xx[5])*0.5;
oney=(yy[3]+yy[5])*0.5;
twox=(xx[1]+xx[2])*0.5;
twoy=(yy[1]+yy[2])*0.5;
}
else if(i==5)
{
onex=(xx[2]+xx[3])*0.5;
oney=(yy[2]+yy[3])*0.5;
twox=(xx[1]+xx[4])*0.5;
twoy=(yy[1]+yy[4])*0.5;
}
double dd=(double)(xx[i]-onex)/(twox-onex)-(double)(yy[i]-oney)/(twoy-oney);
if(dd<0)
dd=-dd;
if(dd>0.00001)
{
return 0;
}
}
return 1;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
for(int i=1;i<=5;i++)
{
scanf("%lf%lf",&x[i],&y[i]);
}
/*
xx[1]=x[1];yy[1]=y[1];
printf("%lf %lf\n",xx[1],yy[1]);
xx[2]=x[2];yy[2]=y[2];
printf("%lf %lf\n",xx[2],yy[2]);
xx[3]=x[4];yy[3]=y[4];
printf("%lf %lf\n",xx[3],yy[3]);
xx[4]=x[5];yy[4]=y[5];
printf("%lf %lf\n",xx[4],yy[4]);
xx[5]=x[3];yy[5]=y[3];
printf("%lf %lf\n",xx[5],yy[5]);
int ans=solve();
printf("%d\n",ans);
*/
int flag=0;
for(int i=1;i<=5;i++)
{
xx[1]=x[i];
yy[1]=y[i];
for(int j=1;j<=5;j++)
{
if(i!=j)
{
xx[2]=x[j];
yy[2]=y[j];
for(int p=1;p<=5;p++)
{
if(p!=i&&p!=j)
{
xx[3]=x[p];
yy[3]=y[p];
for(int q=1;q<=5;q++)
{
if(q!=i&&q!=j&&q!=p)
{
xx[4]=x[q];
yy[4]=y[q];
for(int k=1;k<=5;k++)
{
if(i!=k&&j!=k&&p!=k&&q!=k)
{
xx[5]=x[k];
yy[5]=y[k];
flag=solve();
}
if(flag) break;
}
}
if(flag) break;
}
}
if(flag) break;
}
}
if(flag) break;
}
if(flag) break;
}
if(flag)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}
hdoj5563(简单几何)的更多相关文章
- Python下opencv使用笔记(二)(简单几何图像绘制)
简单几何图像一般包含点.直线.矩阵.圆.椭圆.多边形等等.首先认识一下opencv对像素点的定义. 图像的一个像素点有1或者3个值.对灰度图像有一个灰度值,对彩色图像有3个值组成一个像素值.他们表现出 ...
- Codeforces 935 简单几何求圆心 DP快速幂求与逆元
A #include <bits/stdc++.h> #define PI acos(-1.0) #define mem(a,b) memset((a),b,sizeof(a)) #def ...
- 简单几何(线段相交) POJ 2653 Pick-up sticks
题目传送门 题意:就是小时候玩的一种游戏,问有多少线段盖在最上面 分析:简单线段相交,队列维护当前最上的线段 /******************************************** ...
- osg for android (一) 简单几何物体的加载与显示
1. 首先需要一个OSG for android的环境. (1).NDK 现在Eclipse 对NDK已经相当友好了,已经不需要另外cygwin的参与,具体可以参考 Android NDK开发篇(一) ...
- HDU 6206 青岛网络赛1001 高精度 简单几何
给出的数据1e12规模,常规判点是否在圆范围内肯定要用到半径,求得过程中无法避免溢出,因此用JAVA自带的浮点大数运算,和个ZZ一样比赛中eclipse出现问题,而且太久没写JAVA语法都不清楚变量忘 ...
- CodeForces 703C Chris and Road (简单几何)
题意:有一个n边形的汽车向以速度v向x轴负方向移动,给出零时时其n个点的坐标.并且有一个人在(0,0)点,可以以最大速度u通过w宽的马路,到达(0,w)点.现在要求人不能碰到汽车,人可以自己调节速度. ...
- Jack Straws POJ - 1127 (简单几何计算 + 并查集)
In the game of Jack Straws, a number of plastic or wooden "straws" are dumped on the table ...
- codeforces 394E Lightbulb for Minister 简单几何
题目链接:点我点我 题意:给定n个点. 以下n行给出这n个点坐标. 给定m个点,以下m行给出这m个点坐标. 这m个点是一个凸包,顺时针给出的. 问:在凸包上随意找一个点(x, y) 使得这个点距离n个 ...
- hdu - 3952 Fruit Ninja(简单几何)
思路来自于:http://www.cnblogs.com/wuyiqi/archive/2011/11/06/2238530.html 枚举两个多边形的两个点组成的直线,判断能与几个多边形相交 因为最 ...
随机推荐
- 卸载 linux http
当我们想卸载httpd 的时候,使用rpm -qa httpd 的时候,我们发现有很多的依赖包.我们耐心的想一个一个的卸载的时候(使用rpm -e httpd-*),还会进入死循环.解决的办法是:使用 ...
- yii第三方插件snoopy配置
首先.把snoopy类放到protected\extensions\snoopy\目录下. 其次.在yii配置文件main.php里配置import扩展进来. 'import'=>array( ...
- HDU 2049 不容易系列之(4)——考新郎 (递推,含Cmn公式)
不容易系列之(4)——考新郎 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- ActiveMQ(五) 转
package pfs.y2017.m11.mq.activemq.demo05; import javax.jms.Connection; import javax.jms.ConnectionFa ...
- hiho1079 线段树区间改动离散化
题目链接: hihocoder1079 代码: #include<iostream> #include<cstdio> #include<cstring> #inc ...
- jquery 深入学习笔记之中的一个 (事件绑定)
[jquery 事件绑定] 1.加入元素事件绑定 (1) 加入事件为当前元素 $('p').on('click',function(){ //code here ... }); (2) 加入事件为未来 ...
- delphi中的HOOK [转贴]
按事件分类,有如下的几种常用类型的钩子: 1)键盘钩子可以监视各种键盘消息. 2)鼠标钩子可以监视各种鼠标消息. 3)外壳钩子可以监视各种Shell事件消息. 4)日志钩子可以记录从系统消息队列中取出 ...
- Hibernate Jar包官方下载
1.新手入门,从官网下载Hibernate,选择 Hibernate ORM 2.选择Releases-Overview 3.上面列出的是最新版本,下面有一个see older series 直接下载 ...
- 单字节的FIFO缓存(30天自制操作系统--读书笔记)
从今天起,写一些读书笔记.最近几个月都在看<30天自制操作系统这本书>,书虽说看的是电子书,但可以花钱买的正版书,既然花费了金钱,就总得有些收获. 任何人都不能总是固步自封,想要进步就得学 ...
- JAVA 0 的突破
使用IntelliJ Idea 开发的一个Java 处理数据文件折行的问题,整体来说功能比较简单的一个java脚本的开发,跨平台的优势可以处理windows和lunix平台的文件折行 package ...