zoukankan      html  css  js  c++  java
  • p1954

    说起来,齿轮明明是一块转动的.

    这道题概括了数论和图论,是一道很好的水题.

    先用一个结构体存一下位置,如果遇见了xi==0&&yi==0的记录一下,它是第一个齿轮.看到n<=1080(好奇怪的数),就直接n^2两两比较齿轮连不连,同时sum[i]++,sum[f]++.最后sum[i]表示第i个齿轮所连的齿轮数量.

    所有的齿轮都是连在一起的,看到除了第一个齿轮,其他齿轮都是被一个齿轮带动的,也就是说图画出来是一个链,大部分sum都等于2.唯一不一样的就是第一个和最后一个.用n的时间跑一遍,看谁的sum==1且不是第一个齿轮就输出就好.

    using namespace std;
    inline int read()
    {
        int x=0,f=1;
        char ch=getchar();
        while(!isdigit(ch)) {if(ch=='-') f=-1;ch=getchar();}
        while(isdigit(ch)) {x=x*10+ch-'0';ch=getchar();}
        return x*f;
    }
    int i,f,tx,ty,tr;
    int n;
    int top,sum[1100];
    struct node
    {
        int x,y,next,r,v;
    }o[1100];
    int main()
    {
        n=read();
        for(i=1;i<=n;i++)
        {
            o[i].x=read();
            o[i].y=read();
            o[i].r=read();
            if(o[i].x==0&&o[i].y==0)
                top=i;
        }
        for(i=1;i<=n;i++)
        {
            for(f=i+1;f<=n;f++)
            {
                tx=o[i].x-o[f].x;
                ty=o[i].y-o[f].y;
                tr=o[i].r+o[f].r;
                if(tx*tx+ty*ty==tr*tr)
                    sum[i]++,sum[f]++;
                
            }
        }
        for(i=1;i<=n;i++)
            if(sum[i]==1&&i!=top)
                cout<<o[i].x<<' '<<o[i].y,exit(0);
            
    }
  • 相关阅读:
    linux 、windows、mac、dns刷新
    Nginx日志切割及其各种服务日志随便切
    https是如何防劫持的
    梁启超-少年中国说
    mongodb-4.2-隋唐笔迹
    connection closed by foreign host
    磁盘类型查看
    魅力男神之解说
    jenkins 更新脚本之expect交互
    nginx 之特殊端口转目录访问
  • 原文地址:https://www.cnblogs.com/qywyt/p/9674183.html
Copyright © 2011-2022 走看看