题目链接:Codeforces Round #271 (Div. 2) C. Captain Marmot

题意:给4行数据,每行2个点。(x,y).(a,b)。意思是(x,y)绕(a,b)逆时针旋转90度。问最少的旋转次数使(x,y)的四个点形成一个正方形。

思路:

处理出 点旋转后 4种情况的点。

暴力查找哪四个点可以形成正方形。

正方形判定:

a,b,c,d四个点。

1.处理处4个点两两组合的边。ab,ac,ad,bc,bd,cd、

2.排序,把边分成2组,2组内的大小相等。2条边的作为对角线(l1)。4条边的作为边长(l2)。

3.l2==(根号2)*l2、则是正方形。else 都不是。

在处理的过程正用算角度,开根号。注意精度问题。

AC代码:

#include<stdio.h>
#include<math.h>
#include<string.h>
#include<algorithm>
using namespace std;
const double PI=acos(-1.0);
const double tt=sqrt(2.0);
const double eps=1e-7;
struct point
{double x,y;
};
struct point p[10][10];point change(double x,double y,double a,double b,double c)
{c=c*PI/180.0;point h;x-=a,y-=b;h.x=cos(c)*x-sin(c)*y+a;h.y=sin(c)*x+cos(c)*y+b;return h;
}double dist(point a,point b)
{return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}bool ok(point a,point b,point c,point d)
{int i;double dis[10];dis[0]=dist(a,b);dis[1]=dist(a,c);dis[2]=dist(a,d);dis[3]=dist(b,c);dis[4]=dist(b,d);dis[5]=dist(c,d);sort(dis,dis+6);//从小到大if(fabs(dis[0]-dis[1])<eps && fabs(dis[1]-dis[2])<eps && fabs(dis[2]-dis[3])<eps)//边长{if(fabs(dis[0]-dis[4])>eps && fabs(dis[4]-dis[5])<eps){if(fabs(dis[0]*tt-dis[4])<eps)return true;}}return false;
}
int main()
{int t,i,j,k,z,qiuguo;scanf("%d",&t);while(t--){for(i=0;i<4;i++){double x,y,a,b;scanf("%lf %lf %lf %lf",&x,&y,&a,&b);p[i][0].x=x;p[i][0].y=y;p[i][1]=change(x,y,a,b,90.0);p[i][2]=change(x,y,a,b,180.0);p[i][3]=change(x,y,a,b,270.0);}bool h=ok(p[0][0],p[1][1],p[2][0],p[3][0]);int flag=0,min=1000000;for(i=0;i<4;i++){for(j=0;j<4;j++){for(k=0;k<4;k++){for(z=0;z<4;z++){if(ok(p[0][i],p[1][j],p[2][k],p[3][z])){if(min>i+j+k+z)min=i+j+k+z;flag=1;}}}}}if(flag)printf("%d\n",min);elseprintf("-1\n");}return 0;
}

Codeforces Round #271 (Div. 2) C. Captain Marmot (暴力枚举+正方形判定)相关推荐

  1. Codeforces Round #359 (Div. 2) C. Robbers' watch 暴力枚举

    题目链接 题意是真的烦,到最后才知道是n个m其实就是限定表的两个时区的位数,所以所当数不够填满时区的时候前边自动补零 思路:首先来说不能有重复的数字的话,小时和分钟的总位数大于7肯定不行. 7的7次方 ...

  2. Codeforces Round #271 (Div. 2) F ,E, D, C, B, A

    前言:最近被线段树+简单递推DP虐的体无完肤!真是弱! A:简单题,照着模拟就可以,题目还特意说不用处理边界 B:二分查找即可,用lower_lound()函数很好用 1 #include<st ...

  3. Codeforces Round #323 (Div. 1) B. Once Again... 暴力

    B. Once Again... Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/582/probl ...

  4. Codeforces Round #102 (Div. 1) A. Help Farmer 暴力分解

    A. Help Farmer 题目连接: http://www.codeforces.com/contest/142/problem/A Description Once upon a time in ...

  5. Codeforces Round #191 (Div. 2) A. Flipping Game【*枚举/DP/每次操作可将区间[i,j](1=i=j=n)内牌的状态翻转(即0变1,1变0),求一...

    A. Flipping Game time limit per test 1 second memory limit per test 256 megabytes input standard inp ...

  6. Codeforces Round #460 (Div. 2): E. Congruence Equation(枚举)

    题意:给出a, b, p, x,求有多少个n满足①n*a^n%p==b:②n<=x 思路:先要知道一个很简单的性质:a^n%p的值一定存在循环节(n=0就进入循环),且周期T一定是p-1的约数 ...

  7. Codeforces Round #552 (Div. 3) E. Two Teams 暴力+双向链表

    传送 题意:将n个人分成2个队,每次选取队伍中未被选取的最大值,然后顺便选取左边相邻的k个数(有多少拿多少) 问你最后队伍的分配情况. #include<bits/stdc++.h>usi ...

  8. Codeforces Round #506 (Div. 3)

    Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...

  9. Codeforces Round #563 (Div. 2)/CF1174

    Codeforces Round #563 (Div. 2)/CF1174 CF1174A Ehab Fails to Be Thanos 其实就是要\(\sum\limits_{i=1}^n a_i ...

最新文章

  1. Window10安装pycocotools
  2. Angular响应式表单及表单验证
  3. debug疯了_作业没疯,我先疯了 益智解谜《作业疯了》试玩
  4. qt样式表中背景图片的使用
  5. Linux内核启动:setup_arch
  6. 实战MongoDB-Replication之Master-Slave
  7. Tomcat官网下载旧版本
  8. 组态王bitset用法_组态王使用问题解答
  9. 汇编语言小写字母转换为大写字母
  10. OBS Classic经典版已经不再支持
  11. 2022年机动车新规,外地人上京牌不需要居住证啦
  12. 《白话大数据与机器学习》学习笔记
  13. C#Winform 实现控件自适应父容器大小
  14. Mac无法安装第三方软件
  15. 用Python实现地理信息出图(含比例尺、指北针、图例)
  16. 计算机技术创新型,【现场】艺术与科技跨学科创新型创作人才培养成果展
  17. 比我们优秀的人比我们还努力,你有什么资格不去奋斗
  18. 那些逝去的电脑报刊(十九年回忆)
  19. python如何高效使用excel_高效办公必备:你加班做的 Excel数据汇总,我用Python一分钟搞定!...
  20. 融资向领头羊集中 深圳三成电商死于出生之年

热门文章

  1. MTK用UART1输出log信息
  2. prolog全排列问题
  3. Execution failed for task ':app:mergeDebugResources'
  4. 集装箱装载问题-回溯法解决
  5. 关于getMemory函数的几点思考
  6. linux基础知识之磁盘管理及文件系统
  7. java写的小游戏打砖块_java实现打砖块小游戏
  8. 图形计算机的应用要点,图形计算器在高一函数教学中的几个应用要点.doc
  9. 便携式明渠流量计比对装置,流量液位比对现场应用技术特点
  10. sql yog 连接不上