FZU-2270 Two Triangles(两个三角形全等)
所以首先要是三角形即三点不能共线,其次要全等,即三条边对应相等,最后判断是否对称,如果对称无论如何旋转都无法重合
所以利用叉积选好对应边,如果两个叉积互为相反数,则说明对称否则可以重合,这里注意一种特殊情况,等边三角形要提前判断,因为等边三角形不需要判断叉积只要全等一定可以通过旋转平移重合
直接暴力枚举六个不同的点即可
代码:
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cstring>
#include<iostream>
#include<sstream>
#include<cmath>
#define LL long long
#define INF 0x3f3f3f3f
#define eps 1e-6
using namespace std;
int n;
int T;
int ans;
struct node
{
int x,y;
node (){};
node(int x,int y):x(x),y(y){};
node operator - (node p)
{
return node(x-p.x,y-p.y);
}
int operator *(node p){
return x*p.y-y*p.x;
}
}E[15];
int vis[11][11][11][11][11][11];
double dis(node a,node b)
{
return sqrt((a.x-b.x)*(a.x-b.x)*1.0+(a.y-b.y)*(a.y-b.y)*1.0);
}
int check(int a,int b,int c,int d,int e,int f){
int a1[3] = {a,b,c};
int a2[3] = {d,e,f};
sort(a1,a1+3);
sort(a2,a2+3);
if(vis[a1[0]][a1[1]][a1[2]][a2[0]][a2[1]][a2[2]]==0){
vis[a1[0]][a1[1]][a1[2]][a2[0]][a2[1]][a2[2]]=1;
return 1;
}
else
return 0;
}
int dis2(node a,node b)
{
return (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);
}
int main()
{
scanf("%d",&T);
int kase = 1;
while(T--){
ans = 0;
scanf("%d",&n);
for(int i = 0;i<n;i++){
scanf("%d%d",&E[i].x,&E[i].y);
}
memset(vis,0,sizeof(vis));
for(int i = 0;i<n;i++){
for(int j = 0;j<n;j++){
if(i==j)
continue;
for(int k = 0;k<n;k++){
if(i==k||j==k)
continue;
for(int m = 0;m<n;m++){
if(fabs(dis(E[i],E[k])-dis(E[j],E[m]))>eps)
continue;
if(m==i||m==j||m==k)
continue;
for(int l = 0;l<n;l++)
{
if(l==i||l==j||l==k||l==m)
continue;
for(int o = 0;o<n;o++){
if(fabs(dis(E[i],E[l])-dis(E[j],E[o]))>eps||fabs(dis(E[k],E[l])-dis(E[m],E[o]))>eps)
continue; if(o==i||o==j||o==k||o==m||o==l)
continue;
if((((E[i]-E[k])*(E[i]-E[l]))*((E[j]-E[m])*(E[j]-E[o])))<0)
continue; double len1[3];
double len2[3]; len1[0] = dis(E[i],E[k]);
len1[1] = dis(E[i],E[l]);
len1[2] = dis(E[k],E[l]);
len2[0] = dis(E[j],E[m]);
len2[1] = dis(E[j],E[o]);
len2[2] = dis(E[m],E[o]);
sort(len1,len1+3);
sort(len2,len2+3);
if(fabs(len1[2]-len1[0]-len1[1])<=eps)
continue;
if(fabs(len2[2]-len2[0]-len2[1])<=eps)
continue;
// if(!check(i,k,l,j,m,o))
// continue;
ans++;
}
}
}
}
}
}
printf("Case %d: %d\n",kase++,ans/6);
}
}
FZU-2270 Two Triangles(两个三角形全等)的更多相关文章
- 【计算几何】FZU Problem 2270 Two Triangles
http://acm.fzu.edu.cn/problem.php?pid=2270 [题意] 给定6到10个点,从中选出6个不同的点组成两个三角形,使其中一个三角形可以通过另一个三角形平移和旋转得到 ...
- CSS+DIV两栏式全屏布局
在网上找了很久,发现大部分都是固定宽度设置两栏,全屏情况下的布局很少.最后终于完成了,写出来备查,也供大家参考. <!DOCTYPE html PUBLIC "-//W3C//DTD ...
- [fzu 2273]判断两个三角形的位置关系
首先判断是否相交,就是枚举3*3对边的相交关系. 如果不相交,判断包含还是相离,就是判断点在三角形内还是三角形外.两边各判断一次. //http://acm.fzu.edu.cn/problem.ph ...
- Android中两种设置全屏的方法
设置全屏的两种方法: 第一种:在配置文件里面配置: <?xml version="1.0" encoding="utf-8"?><manife ...
- Android中两种设置全屏或者无标题的方法
在开发中我们经常需要把我们的应用设置为全屏或者不想要title, 这里是有两种方法的,一种是在代码中设置,另一种方法是在配置文件里改: 一.在代码中设置: package jason.tutor; i ...
- Spring Boot 整合 Shiro ,两种方式全总结!
在 Spring Boot 中做权限管理,一般来说,主流的方案是 Spring Security ,但是,仅仅从技术角度来说,也可以使用 Shiro. 今天松哥就来和大家聊聊 Spring Boot ...
- OpenGL红宝书第一个例子:绘制两个三角形
1. 环境配置 在这里不在做环境配置的说明,因为网上可以找到很多类似的教程,如果有需要可以@我,我也希望能帮到大家,其它的不说了,先上我的代码 2. 第一个程序代码 创建LoadShader.h #p ...
- Codestorm:Counting Triangles 查各种三角形的个数
题目链接:https://www.hackerrank.com/contests/codestorm/challenges/ilia 这周六玩了一天的Codestorm,这个题目是真的很好玩,无奈只做 ...
- [itint5]两数积全为1
http://www.itint5.com/oj/#18 这一题,首先如果直接去算的话,很容易就超出int或者long的表示范围了.那么要利用%的性质,(num * 10 + 1) % a = 10 ...
随机推荐
- leetcode 【 Remove Duplicates from Sorted List 】 python 实现
题目: Given a sorted linked list, delete all duplicates such that each element appear only once. For e ...
- 每天一个Linux命令(5):rm命令
rm命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉.对于链接文件,只是删除整个链接文件,而原有文件保持不变. 语法 rm (选项)(参数) 选项 - ...
- chrome flash插件改为自动运行
1.情景展示 国内网页视频播放大部分用的都是flash插件,每次都要将默认改为允许,才能正常播放 能不能让flash插件在所有的网站上都能自动运行呢? 2.解决方案 第一步:打开fla ...
- 【志银】nginx_php_mysql_phpMyAdmin配置(Windows)
✄更新中... 更新日期:2018.11.22 ★版本说明+快捷下载(官网) nginx nginx-1.14.1 http://nginx.org/download/nginx-1.14.1. ...
- java的四种内部类(转)
一般来说,有4中内部类:常规内部类.静态内部类.局部内部类.匿名内部类. 一.常规内部类:常规内部类没有用static修饰且定义在在外部类类体中. 1.常规内部类中的方法可以直接使用外部类的实例变量 ...
- 软工实践 - 第十四次作业 Alpha 冲刺 (5/10)
队名:起床一起肝活队 组长博客:https://www.cnblogs.com/dawnduck/p/9992094.html 作业博客:班级博客本次作业的链接 组员情况 组员1(队长):白晨曦 过去 ...
- git 上传项目到仓库
git 上传项目到仓库 第一步:建立仓库! 1.create new repository! 创建时最好选择 init (Initialize this repository with a READM ...
- 在nodejs中 Object的toString()方法 querystring的stringify() JSON.stringify()
刚学nodejs,做到一个例子:发送简单的HTTP请求.遇到一个问题,客户端给服务端发送的消息到服务端,服务端收不到消息,确切的说是“”. 以下是服务端代码:server.js const http ...
- jQuery的slicebox插件实现3D翻转轮播效果
最近做项目,banner要实现立体的翻转效果,通过搜索,发现了jQuery的一款插件,能够很好的实现该效果,这里就记录一下. 效果图如下: 使用方法: 1. 在html中引入必要的js和css文件: ...
- BZOJ4888 [Tjoi2017]异或和 【树状数组】
题目链接 BZOJ4888 题解 要求所有连续异或和,转化为任意两个前缀和相减 要求最后的异或和,转化为求每一位\(1\)的出现次数 所以我们只需要对每一个\(i\)快速求出\(sum[i] - su ...