题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6055

题意: 给出 n 组坐标 x, y, 输出其中的正多边形个数 . 其中 x, y 均为整数.

思路: x, y 为整数, 所以只存在正方形, 不会有其他正多边形 . 那么只需要枚举正方形的对角线即可 .

代码:

  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <algorithm>
  5. #define ll long long
  6. using namespace std;
  7.  
  8. const int MAXN = 1e3 + ;
  9. const int H = 1e4 + ;
  10.  
  11. struct node{
  12. int x, y, next;
  13. }gel[MAXN];
  14.  
  15. ll ans;
  16. int head[H];
  17. int indx, n;
  18. int ptx[MAXN], pty[MAXN];
  19.  
  20. void init(void){
  21. memset(head, -, sizeof(head));
  22. indx = ;
  23. ans = ;
  24. }
  25.  
  26. void add(int x, int y){
  27. int h = (x * x + y * y) % H;
  28. gel[indx].x = x;
  29. gel[indx].y = y;
  30. gel[indx].next = head[h];
  31. head[h] = indx++;
  32. }
  33.  
  34. bool find(int x, int y){
  35. int h = (x * x + y * y) % H;
  36. for(int i = head[h]; i != -; i = gel[i].next){
  37. if(x == gel[i].x && y == gel[i].y) return true;
  38. }
  39. return false;
  40. }
  41.  
  42. int main(void){
  43. while(~scanf("%d", &n)){
  44. init();
  45. for(int i = ; i < n ; i++){
  46. scanf("%d%d", &ptx[i], &pty[i]);
  47. add(ptx[i], pty[i]);
  48. }
  49. for(int i = ; i < n; i++){
  50. for(int j = ; j < n; j++){
  51. if(i == j) continue;
  52. int x1 = ptx[i] - (pty[i] - pty[j]);
  53. int y1 = pty[i] + (ptx[i] - ptx[j]);
  54. int x2 = ptx[j] - (pty[i] - pty[j]);
  55. int y2 = pty[j] + (ptx[i] - ptx[j]);
  56. if(find(x1, y1) && find(x2, y2)) ans++;
  57. }
  58. }
  59. printf("%lld\n", ans >> );
  60. }
  61. return ;
  62. }

hdu6055(求正方形个数)的更多相关文章

  1. m*n 矩阵中求正方形个数

    <?php /** * Notes: * User: liubing17 * DateTime: 2019-10-17 17:10 */ function get($m, $n){ /* * 获 ...

  2. HDU 4739 求正方形个数

    九野的博客,转载请注明出处:http://blog.csdn.net/acmmmm/article/details/11711707 求所有可能围成的正方形,借个代码 #include <que ...

  3. C语言辗转相除法求2个数的最小公约数

    辗转相除法最大的用途就是用来求两个数的最大公约数. 用(a,b)来表示a和b的最大公约数. 有定理: 已知a,b,c为正整数,若a除以b余c,则(a,b)=(b,c). (证明过程请参考其它资料) 例 ...

  4. 求N个数的最大公约数和最小公倍数(转)

    除了分解质因数,还有另一种适用于求几个较小数的最大公约数.最小公倍数的方法 下面是数学证明及算法实现 令[a1,a2,..,an] 表示a1,a2,..,an的最小公倍数,(a1,a2,..,an)表 ...

  5. 75 int类型数组中除了一个数出现一次或两次以外,其他数都出现三次,求这个数。[2行核心代码]

    [本文链接] http://www.cnblogs.com/hellogiser/p/single-number-of-array-with-other-three-times.html [题目] i ...

  6. LightOj 1024 - Eid (求n个数的最小公约数+高精度)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1024 题意:给你n(2<=n<=1000)个数, 然后求n个数的最小公倍数 ...

  7. wikioi 1202 求和(求n个数的和)

    /*============================================================= 1202 求和 题目描述 Description 求n个数的和 输入描述 ...

  8. 求n个数中的最大或最小k个数

    //求n个数中的最小k个数        public static void TestMin(int k, int n)        {            Random rd = new Ra ...

  9. 求两个数的最大公约数(Euclid算法)

    求两个数 p 和 q 的最大公约数(greatest common divisor,gcd),利用性质 如果 p > q, p 和 q 的最大公约数 = q 和 (p % q)的最大公约数. 证 ...

随机推荐

  1. ListOperations

    RedisOperations<K,V> getOperations()  V index(K key, long index)  V leftPop(K key)  V leftPop( ...

  2. 自定义响应结构 AjaxResult()

    package com.dsj.gdbd.utils.ajax; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxm ...

  3. 一致性问题和Raft一致性算法——一致性问题是无法彻底解决的,可以说一个分布式系统可靠性达到99.99…%,但不能说它达到了100%

    一致性问题 一致性算法是用来解决一致性问题的,那么什么是一致性问题呢? 在分布式系统中,一致性问题(consensus problem)是指对于一组服务器,给定一组操作,我们需要一个协议使得最后它们的 ...

  4. 【VS】VS开发中遇到的问题的总结

    1.  VS中经常会出现无法解析的外部符号,还有LINK ERROR 2019等 这类问题如果检查代码没有错误,很大概率就是lib文件错误.调试程序找出问题函数,再找出问题函数使用到的lib文件,在项 ...

  5. 【转】 Pro Android学习笔记(六三):Preferences(7):代码控制首选项

    [-] 代码实现preference 利用preference保存状态 DialogPreference 代码实现preference View可以不通过xml进行设置,有代码直接进行设置,首选项pr ...

  6. ES6学习之Iterator和For...of循环

    一.Iterator(它是一种接口,为各种不同的数据结构提供统一的访问机制.Iterator 接口主要供for...of消费) 默认Iterator接口(默认的 Iterator 接口部署在数据结构的 ...

  7. C# 处理Json

    下面是JSON对象转换为字符串 public static string ToJson(object obj) { try { JavaScriptSerializer serializer = ne ...

  8. 字符串(String)

    字符串是由字符组成的数组,但在JavaScript中字符串是不可变的:可以访问字符串任意位置的文本,但是JavaScript并未提供修改已知字符串内容的方法. 常见功能: obj.length     ...

  9. [HDU1109]模拟退火算法

    模拟退火的基本思想: (1) 初始化:初始温度T(充分大),初始解状态S(是算法迭代的起点),每个T值的迭代次数L (2) 对k=1,……,L做第(3)至第6步: (3) 产生新解$S\prime $ ...

  10. layui 表格新增删除一行

    1.html 代码 <div class="layui-row layui-col-space5"> <div> <span style=" ...