SSL P1222/洛谷 P2449 矩阵

目录:

题目:

矩阵题目

题意:

给出我们n个矩阵方块,并告诉我们左下角以及右上角的坐标,求一共有几个连通块。

分析:

说是求连通块,其实我们可以用并查集来解决,只需要打好判断是否连通的条件,再用并查集来看祖先是否相同即可。

思路:

1.初始化
2.枚举每个矩阵,逐个判断是否连通,连通则将他们两个在并查集中合并
3.看在并查集中,一共出现了几个不同的祖先

AC后感想:

小编的代码在洛谷上是可以AC的,但交到sslOJ上就WA了,表示很懵逼。
然后就是洛谷上的样例是错哒,小编发的题目上改了,大家可以按照上面的数据去做。

代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define LL long long
using namespace std;
inline LL read() {
    LL d=0,f=1;char s=getchar();
    while(s<'0'||s>'9'){if(s=='-')f=-1;s=getchar();}
    while(s>='0'&&s<='9'){d=d*10+s-'0';s=getchar();}
    return d*f;
}
int f[7001];
int father(int i)//找祖先
{
    return f[i]==i? i:f[i]=father(f[i]);//加速递归
}
void hb(int x,int y)//合并
{
    int r1=father(f[x]),r2=father(f[y]);
    f[r1]=r2;
}
int p[7001];
int x1[7001],x2[7001],y1[7001],y2[7001];
int main()
{
    int n=read();
    for(int i=1;i<=n;i++)
 x1[i]=read(),y1[i]=read(),x2[i]=read(),y2[i]=read();
    for(int i=1;i<=n;i++) f[i]=i;//并查集初始化
    for(int i=1;i<n;i++)
      for(int j=i+1;j<=n;j++)//枚举
      {
      //前方高能!!!@_@
        if((y1[j]>=y1[i]&&y1[j]<=y2[i])
          ||(y2[j]>=y1[i]&&y2[j]<=y2[i])
          ||(x1[j]>=x1[i]&&x1[j]<=x2[i])
          ||(x2[j]>=x1[i]&&x2[j]<=x2[i])
          ||(y1[i]>=y1[j]&&y1[i]<=y2[j])
          ||(y2[i]>=y1[j]&&y2[i]<=y2[j])
          ||(x1[i]>=x1[j]&&x1[i]<=x2[j])
          ||(x2[i]>=x1[j]&&x2[i]<=x2[j]))
       //判断是否连通
          if(father(i)!=father(j)) hb(i,j);//不是同一祖先→合并
      }
    for(int i=1;i<=n;i++)
      p[father(i)]=1;//记录祖先
    int ans=0;
    for(int i=1;i<=n;i++) ans+=p[i];//统计
    printf("%d",ans);
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用可以通过将/etc/ssl/private/ssl-cert-snakeoil.key复制到/etc/ssl/certs/目录,并设置相应的权限,来确保该文件可读。另外,/etc/ssl/certs/ssl-cert-snakeoil.pem文件应该已经是可读的。此外,如果您遇到了github的服务器证书验证失败的问题,可以尝试重新安装证书或更新证书。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Robot_Commander:CordovaAndroid应用程序可控制ROS机器人](https://download.csdn.net/download/weixin_42131439/18656333)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [【linux】CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none 解决方法](https://blog.csdn.net/xinhuarufang/article/details/112653990)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [服务器证书验证失败。 CAfile:/etc/ssl/certs/ca-certificates.crt CRLfile:无](https://blog.csdn.net/xfxf996/article/details/107954491)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值