p1954

Posted qywyt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);
        
}

 

以上是关于p1954的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段——CSS选择器

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

片段和活动之间的核心区别是啥?哪些代码可以写成片段?

VSCode自定义代码片段——.vue文件的模板

VSCode自定义代码片段6——CSS选择器

VSCode自定义代码片段——声明函数