首页 > 其他分享 >I. Disks

I. Disks

时间:2024-06-17 21:10:25浏览次数:11  
标签:变小 ll Disks next vis now op

原题链接

题解

对于一组相切的圆来说,其中一个圆变大,其相邻的圆变小,然后相邻的相邻的圆变大...而要让总半径和变小,一定得是总的变小的圆更多

实施

先判断一组圆能不能发生变化,然后再累积变大和变小的圆个数

code

#include<bits/stdc++.h>
using namespace std;

#define ll long long
const ll inf=2e14;

struct node
{
    ll x,y,r;
}c[1005];

vector<ll> G[1005];

ll vis[1005]={0};

inline void read(ll &x) {
	x = 0;
	ll flag = 1;
	char c = getchar();
    while(c < '0' || c > '9'){
        if(c == '-')flag = -1;
        c = getchar();
    }
	while(c >= '0' && c <= '9') {
		x = (x << 3) + (x << 1) + (c ^ 48);
		c = getchar();
	}
	x *= flag;
}

inline void write(ll x)
{
    if(x < 0){
    	putchar('-');
		x = -x;
	}
    if(x > 9)
		write(x / 10);
    putchar(x % 10 + '0');
}

ll res=0;
void dfs(ll now, ll fa, ll op)
{
    res+=op;
    vis[now]=op;
    for(auto next:G[now])
    {
        if(next==fa) continue;
        if(!vis[next])
        {
            dfs(next,now,-op);
        }
        else if(vis[next]==vis[now]) res+=inf;
    }

}

int main()
{
    ll n;
    read(n);
    for(ll i=1; i<=n; i++)
    {
        read(c[i].x);
        read(c[i].y);
        read(c[i].r);
    }

    for(ll i=1; i<=n; i++)
    {
        for(ll j=1; j<i; j++)
        {
            ll x1=c[i].x, x2=c[j].x, y1=c[i].y, y2=c[j].y, r1=c[i].r, r2=c[j].r;
            if((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)==(r1+r2)*(r1+r2))
            {
                G[i].push_back(j);
                G[j].push_back(i);
            }
        }
    }

    for(ll i=1; i<=n; i++)
    {
        if(!vis[i])
        {
            res=0;
            dfs(i,i,1);
            if(res&&res<=n)
            {
                puts("YES");
                return 0;
            }
        }
    }

    puts("NO");
    return 0;
}


标签:变小,ll,Disks,next,vis,now,op
From: https://www.cnblogs.com/pure4knowledge/p/18253209

相关文章

  • udisksctl dump
    命令udisksctldump用于获取有关系统中连接的磁盘和分区的详细信息。它提供了一个关于块设备的完整清单,包括设备的路径、容量、文件系统类型、挂载点等。当你在终端中运行udisksctldump命令时,它将输出一个包含所有可用磁盘和分区的详细列表。这对于了解系统中存在哪些磁盘和分区......
  • 最新版本的操作系统DiskStation Manager 7.2
        数据安全问题是大数据时代备受关注的领域,而针对这些问题,群晖科技发布最新的操作系统,以便解决各种数据管理难题。据悉,群晖科技发布最新版本的操作系统DiskStationManager7.2(DSM7.2),而这次更新为企业的数据管理提供了一系列新功能和改进,旨在解决各种数据管理挑战。......