题意:
给出n个点,有两个人,每个人可以选3个点,问有多少种情况是可以找出两个三角形,是可以通过旋转使其全等。
 
思路:

所以首先要是三角形即三点不能共线,其次要全等,即三条边对应相等,最后判断是否对称,如果对称无论如何旋转都无法重合

所以利用叉积选好对应边,如果两个叉积互为相反数,则说明对称否则可以重合,这里注意一种特殊情况,等边三角形要提前判断,因为等边三角形不需要判断叉积只要全等一定可以通过旋转平移重合

直接暴力枚举六个不同的点即可

代码:

#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(两个三角形全等)的更多相关文章

  1. 【计算几何】FZU Problem 2270 Two Triangles

    http://acm.fzu.edu.cn/problem.php?pid=2270 [题意] 给定6到10个点,从中选出6个不同的点组成两个三角形,使其中一个三角形可以通过另一个三角形平移和旋转得到 ...

  2. CSS+DIV两栏式全屏布局

    在网上找了很久,发现大部分都是固定宽度设置两栏,全屏情况下的布局很少.最后终于完成了,写出来备查,也供大家参考. <!DOCTYPE html PUBLIC "-//W3C//DTD ...

  3. [fzu 2273]判断两个三角形的位置关系

    首先判断是否相交,就是枚举3*3对边的相交关系. 如果不相交,判断包含还是相离,就是判断点在三角形内还是三角形外.两边各判断一次. //http://acm.fzu.edu.cn/problem.ph ...

  4. Android中两种设置全屏的方法

    设置全屏的两种方法: 第一种:在配置文件里面配置: <?xml version="1.0" encoding="utf-8"?><manife ...

  5. Android中两种设置全屏或者无标题的方法

    在开发中我们经常需要把我们的应用设置为全屏或者不想要title, 这里是有两种方法的,一种是在代码中设置,另一种方法是在配置文件里改: 一.在代码中设置: package jason.tutor; i ...

  6. Spring Boot 整合 Shiro ,两种方式全总结!

    在 Spring Boot 中做权限管理,一般来说,主流的方案是 Spring Security ,但是,仅仅从技术角度来说,也可以使用 Shiro. 今天松哥就来和大家聊聊 Spring Boot ...

  7. OpenGL红宝书第一个例子:绘制两个三角形

    1. 环境配置 在这里不在做环境配置的说明,因为网上可以找到很多类似的教程,如果有需要可以@我,我也希望能帮到大家,其它的不说了,先上我的代码 2. 第一个程序代码 创建LoadShader.h #p ...

  8. Codestorm:Counting Triangles 查各种三角形的个数

    题目链接:https://www.hackerrank.com/contests/codestorm/challenges/ilia 这周六玩了一天的Codestorm,这个题目是真的很好玩,无奈只做 ...

  9. [itint5]两数积全为1

    http://www.itint5.com/oj/#18 这一题,首先如果直接去算的话,很容易就超出int或者long的表示范围了.那么要利用%的性质,(num * 10 + 1) % a = 10 ...

随机推荐

  1. navmesh自动寻路

    一个导航网格(也就是Navmesh)是世界几何体简化的表示法,被游戏代理用于在世界中进行导航.通常,代理(agent )有一个目标,或一个目的地,它试图找到一个路径,然后沿路径导航到达目标.这个过程被 ...

  2. Opencv4.0.0安装包

    这个资源是Opencv4.0.0安装包,包括Windows软件包,Android软件包,IOS软件包,还有opencv的源代码:需要的下载吧. 点击下载

  3. Could not automatically select an Xcode project. Specify one in your Podfile like so

    需要将Podfile文件放置在根目录下,而不能放置在项目的里面. 更改路径即可

  4. gulp-API介绍

    使用gulp,一般只需要用4个API:gulp.src(),gulp.dest(),gulp.task(),gulp.watch(). 1. gulp.src() 用来获取流的,但是要注意的是这个流里 ...

  5. java 图形化界面笔记(1)

    目录 JFrame窗体......................................................................................... ...

  6. [洛谷P3807]【模板】卢卡斯定理

    题目大意:给你$n,m,p(p \in \rm prime)$,求出$C_{n + m}^m\bmod p(可能p\leqslant n,m)$ 题解:卢卡斯$Lucas$定理,$C_B^A\bmod ...

  7. Tomcat学习笔记(十一)

    StandardContext类  Context实例代表着一个具体的web应用程序,其中包含一个或者多个Wrapper实例,每个Wrapper实例代表着具体的servlet定义.但是,Context ...

  8. Codeforces Round #290 (Div. 2) B. Fox And Two Dots(DFS)

    http://codeforces.com/problemset/problem/510/B #include "cstdio" #include "cstring&qu ...

  9. [从hzwer神犇那翻到的模拟赛题] 合唱队形

    [问题描述] 学校要进行合唱比赛了,于是班主任小刘准备给大家排个队形. 他首先尝试排成m1行,发现最后多出来a1个同学:接着他尝试排成m2行,发现最后多出来a2个同学,……,他尝试了n种排队方案,但每 ...

  10. 【ZOJ4067】Books(贪心)

    题意:DG在书店买书,从左到右第i本书价格为ai. DG从左走到右,能买就买.如果已知DG买了m本书,问他原本最多有多少钱. 若无上限,输出“Richman”,若不可能买这么多书,输出“Impossi ...