hdu 5365 /BC 50B Run

6 篇文章 0 订阅

题意有点坑 开始就是觉得是求存在多少个以图中点为顶点的正多边形(3到6) 结果编好后他补充了了一句 最后形成的轨迹 边上不能有点 让我误以为 有的大的正多边形就不算了 后来仔细揣摩了一下才明白 原题中是说了 若两种跑法经过的座椅集合相同则认为是一种跑法 所以综合起来 还是最开始理解的那样 

对于题中所说的正多边形 可以发现 只有4边形可以由整数点构成 简单证明下 如果正3角形的边长为整数k 则高为根号3k 不是整数 就无法由整数点构成 发现了这个规律就很简单了

找正方形的话 由于存在一些斜着的 所以每个点 暴力找出它左下的 点 推出剩下的点的位置来验证 这样不重不漏 编起来也好编 由于数据小 可以把点放进2维数组里 方便操作  

比赛时 很早就发现了 然后就很开心的去找正方形 结果忘了 正方形可以斜着放 wa了之后 想半天也没想到 只能去做C 回来再做B的时候 题面加了补充 再题意上纠结了一会之后才发现这个bug (>﹏<)

#include <iostream>
#include <cstring>
#include <string>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <queue>
#include <map>
#include<set>
#include<stack>
#define bug puts("bugbugbug");
using namespace std;
typedef long long ll;
int a[50][50];
int main()
{
    int n;
    while(~scanf("%d",&n))
    {
        memset(a,0,sizeof(a));
        for(int i=0; i<n; i++)
        {
            int x,y;
            scanf("%d%d",&x,&y);
            a[x][y]=1;
        }
        int ans=0;
        for(int i=0; i<=8; i++)
            for(int j=0; j<=8; j++)
                if(a[i][j]){
                    for(int ii=i; ii<=8; ii++)
                        for(int jj=0; jj<j; jj++)
                            if(a[ii][jj])
                            {
                                int cc=j-jj;
                                int dd=ii-i;
                                if(a[ii+cc][jj+dd]&&a[i+cc][j+dd])
                                    ans++;
                            }
                }
        printf("%d\n",ans);

    }
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值