hdu5652 India and China Origins(并查集)

COMSOL电磁仿真案例——感应线圈 COMSOL电磁建模仿真案例——感应线圈 阅读详情

India and China Origins

 
 Accepts: 49
 
 Submissions: 426
 Time Limit: 2000/2000 MS (Java/Others)
 
 Memory Limit: 65536/65536 K (Java/Others)
问题描述
很久以前,中国和印度之间并没有喜马拉雅山相隔,两国的文化交流很频繁。随着喜马拉雅山海拔逐渐增加,两个地区的交流也越来越少,最终没有了来往。




假设当时的地形和我画的一样,蓝色部分代表海洋,而且当时人们还没有发明轮船。黄色部分代表沙漠,而且沙漠上经常有野鬼散步,所以人们不敢到沙漠中行走。黑色的格子表示山峰,这些山峰都无比高大,所以人无法穿过。白色格子代表平原,人可以在平原上自由行走。人每次可以向相邻的四个格子走动。

此外,我们的考古学家发现还有一些山峰会逐渐形成,通过研究发现,位置在 (x, y)(x,y) (保证该位置之前没有山峰)的地方在 ii 年后出现了山峰。现在给你若干个位置出现山峰的时间,你可以计算出中国和印度之间的联系最早被彻底切断的时间吗?
输入描述
多组测试数据, 第一行为组数T(T\leq 10)T(T≤10)。每组测试数据第一行包含两个数 N, M (1 \leq N, M \leq 500)N,M(1≤N,M≤500), 表示地图的大小。接下来 NN 行长度为 MM 的 0101 字符串。00代表白色格子,11 代表山峰。接下来有 Q(1\leq Q \leq N\times M)Q(1≤Q≤N×M) 行,第 i(1\leq i \leq Q)i(1≤i≤Q) 两个整数 (x,y),0 \leq x < N, 0 \leq y < M(x,y),0≤x<N,0≤y<M 表示在第 ii 年 (x,y)(x,y) 出现了一座山峰。
输出描述
对于每组测试数据,输出一个数, 表示两国最早失联的时间。如果最终两国之间还有联系则输出 -1。
输入样例
1
4 6
011010
000010
100001
001000
7
0 3
1 5
1 3
0 0
1 2
2 4
2 1
输出样例
4
Hint

从上图可以看到,两国在第四年彻底失去了联系。



/*
hdu5652 India and China Origins(并查集)

给你一个棋盘形状的东东,上面1代表无法越过的山峰,0代表可以通过的平原.
而且在接下来q次会出现一些山峰,问多少次后棋盘上下不连通
如果一直联通则输出-1

开始想到了并查集但是实现起来有点问题,每次插入后都要把最左边一列判断
一下,看他们的父亲是否是棋盘的最右端.感觉并不够简便
然后参考了下大神们的代码,发现可以在合并的时候记录下这个联通量最左边
和最右边的位置,这样每次合并时只需要判断max-min是否等于棋盘的宽度就
好了
果然自己太死板了TAT

hhh-2016-03-27 12:42:45
*/

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<functional>
using namespace std;
#define lson  (i<<1)
#define rson  ((i<<1)|1)
typedef long long ll;
const int maxn = 505 ;
int from = 500*500;
int to = 500*500+1;
int n,m;
int dir[9][2] = {{1,1},{1,0},{0,1},{1,-1},{0,-1},{-1,1},{-1,-1},{-1,0}};
char str[maxn];
int far[maxn*maxn];
int tmap[maxn][maxn];
int l[maxn*maxn],r[maxn*maxn];

int fin(int x)
{
    return x == far[x]?  x : far[x] = fin(far[x]);
}

bool  unio(int a,int b)
{
    int ta = fin(a);
    int tb = fin(b);
    if(ta != tb)
    {
        far[ta] = tb;
        l[tb] = min(l[ta],l[tb]);
        r[tb] = max(r[ta],r[tb]);
        if(r[tb] - l[tb] == m-1)
            return 1;
    }
    return 0;
}

int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d%d",&n,&m);
        for(int i = 0; i < n; i++)
        {
            scanf("%s",str);
            for(int j = 0; j < m; j++)
            {
                tmap[i][j] = str[j]-'0';
                far[i*m+j] = i*m+j;
            }
        }

        for(int i = 0; i < n; i++)
        {
            for(int j = 0; j < m; j++)
                //if(tmap[i][j])
                {
                    l[i*m+j] = j;
                    r[i*m+j] = j;
                }
        }
        int flag =0;
        for(int i = 0; i < n; i++)
        {
            for(int j = 0; j < m; j++)
            {
                if(tmap[i][j])
                {
                    for(int k = 0; k < 8; k++)
                    {
                        int tx = i + dir[k][0];
                        int ty = j + dir[k][1];
                        if(tx < 0 || tx >= n || ty < 0 || ty >= m || !tmap[tx][ty])
                            continue;
                        if(unio(i*m+j,tx*m+ty))
                            flag = 1;
                    }

                }
            }
        }
        if(flag)
            printf("0\n");
        int q;
        scanf("%d",&q);
        for(int i = 0; i < q; i++)
        {
            int x,y;
            scanf("%d%d",&x,&y);
            tmap[x][y] = 1;
            if(flag)
                continue;
            for(int k = 0; k < 8; k++)
            {
                int tx = x + dir[k][0];
                int ty = y + dir[k][1];
                if(tx < 0 || tx >= n || ty < 0 || ty >= m || !tmap[tx][ty])
                    continue;
                if(unio(x*m+y,tx*m+ty))
                {
                    flag = 1;
                    printf("%d\n",i+1);
                }
            }
        }
        if(!flag)
            printf("-1\n");
    }
    return 0 ;
}


25年PINN创新点大盘点! 在科研论文的激烈角逐中,想轻松产出高含金量成果?物理信息神经网络(PINN)堪称“宝藏研究方向”,是冲击高分区论文的绝佳赛道!对于渴望发表优质论文的科研伙伴,这三大研究路径值得重点关注。首先是自适应PINN,在PINN训练过程中,物理方程与实测数据间的矛盾常常导致权重调节困难,而恰好直击这一痛点,是极具价值的研究方向。其次,同样前景广阔,传统多物理场同时训练效果欠佳,如今分阶段训练方法脱颖而出,成效显著且竞争较小。最后,探索及多任务学习等技术的融合,能实现优势叠加,碰撞出创新火花。 阅读详情

相关推荐

手把手教你用单结晶体管搭建简易振荡电路(含电路图和波形分析)

本文详细介绍了如何使用单结晶体管(UJT)搭建简易振荡电路,包括电路设计、波形分析和实战技巧。通过具体的电路图和参数计算,帮助电子爱好者和工程师快速掌握UJT振荡器的设计与调试方法,适用于脉冲信号生成和时钟源制作等应用场景。

weixin_29207533的博客 516

算法分析与设计之并查集详解

本文主要介绍解决动态连通性一类问题的一种算法,使用到了一种叫做并查集的数据结构,称为Union-Find。更多的信息可以参考Algorithms一书的Section 1.5,实际上本文也就是基于它的一篇读后感吧。原文中更多的是给出一些结论,我尝试给出一些思路上的过程,即为什么要使用这个方法,而不是别的什么方法。我觉得这个可能更加有意义一些,相比于记下一些结论。

weixin_52448922的博客 1073

CH341的I2C流模式(StreamI2C)到底怎么用?从EEPROM读写到自定义设备,一篇讲清参数配置逻辑

本文详细解析了CH341的I2C流模式(StreamI2C)的使用方法,从EEPROM读写到自定义设备的参数配置逻辑。通过深入分析I2C协议基础、StreamI2C参数映射关系及典型设备配置示例,帮助开发者快速掌握StreamI2C的应用技巧,解决实际开发中的常见问题。

weixin_30932215的博客 447

hdu 5652(并查集)

题意:很久之前,在中国和印度之间有通路,通路可以简化为一个n*m的字符串,0表示能通过,1表示障碍,每过一年就有一个坐标变成1,问你什么时候,通路彻底无法通过; 解题思路:无向图的连通性,一般直接搜索或者并查集判定,这里用的是并查集,我们把相连的障碍放到一个集合内,然后如果第一列的某点和最后一列的某点也在这个集合内,那么说明,这个通路被障碍堵死了; 这里要处理下第一列和最后一列的问题,可以选择...

weixin_30610755的博客 134

Qt C++实现HTTP/HTTPS服务器与客户端:从Socket到协议解析全流程

HTTP协议作为Web通信的基础,定义了客户端与服务器之间基于文本的请求-响应模型。其工作原理是通过TCP连接传输结构化的报文,实现资源获取与数据交换。在C++开发中,掌握HTTP协议底层实现具有重要技术价值,能够帮助开发者构建高性能、可深度定制的网络应用,尤其适用于嵌入式设备管理、桌面应用后端等场景。本文聚焦于使用Qt框架的QTcpSocket和QSslSocket组件,从Socket层面手动实现完整的HTTP/HTTPS通信栈,涵盖协议解析、流式处理、路由分发等核心环节,并深入探讨了HTTPS证书验证、

weixin_31292729的博客 330

PLC编程进阶:结构体(UDT)与功能块(FB)的模块化实践指南

本文深入探讨了PLC编程中实现模块化的核心方法,重点解析了结构体(UDT)与功能块(FB)的协同应用。通过将零散数据封装为UDT,并将控制逻辑打包为可复用的FB,能够构建出结构清晰、易于维护和调试的PLC程序。文章结合拧紧枪、电机控制等实战案例,提供了从设计原则到分层架构的完整实践指南,旨在帮助工程师将混乱的‘面条式’代码改造为高效的‘正规军’。

s3t4u的博客 220

数据结构之并查集(hdu1988 hdu2492)

(抄知识点方便自己复习)//摘自俞勇的acm国际大学生程序设计竞赛,知识与入门 基本概念 不相交集为一组彼此不相交(没有公共元素)的集合。并查集算法作用于一个不相交集,实际应用中可以在近乎常数的时间内完成下列两种操作。 1:查找(find):确定元素所在的集合。一般用来判断两个元素是否在同一个集合。 2:合并(Union):将两个集合合并成一个集合。 对于查找操作,假设需要确定x所在

m_Cryophoenix的博客 382

shopro 商城,2025年新申请的微信支付提示失败,支付提示 Get Wechat Public Cert Error 问题的修复办法

shopro 商城,最近新申请的微信支付商户 支付提示 Get Wechat Public Cert Error 问题的修复办法

行走的卡路里 1244

HDU 6109(并查集)

HDU 6109(并查集)

ME495的博客 505

微信聊天记录丢失原因与恢复方案详解

SQLite数据库作为移动应用常见的本地存储方案,其加密机制和存储结构直接影响数据安全性。以微信为例,聊天记录存储在EnMicroMsg.db等SQLite文件中,采用AES加密保护。当手机清理工具误删这些文件时,会导致特定时间段记录丢失。理解数据恢复原理需要掌握文件系统删除机制和闪存特性,其中关键点包括TRIM指令的影响和数据块覆盖风险。通过专业工具如DiskDigger或iMyFone D-Back,配合ADB调试和SQLite数据重组技术,可在黄金时间窗口内恢复记录。日常维护建议结合自动化备份方案和存

weixin_32612263的博客 386

【雷达成像实战】RD、CS、RMA算法对比与Matlab实现:从信号处理到高清成像

本文深入对比了雷达成像中三种核心算法:经典的距离多普勒算法(RD)、基于稀疏重建的压缩感知算法(CS)以及高精度的快速多通道获取算法(RMA)。通过详细的Matlab实战代码,从原理拆解到实现步骤,分析了各自在计算效率、成像精度、数据需求和适用场景上的优劣,为工程选型与算法实践提供了清晰指南。

weixin_29095587的博客 447

并查集

[简介]在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。在数据量过大时,只能用并查集来描述。并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。并查集的相关介绍参见并查集详解。 其核心函数如下:#define

legend4917的专栏 413

【后量子密码】SPHINCS+ 算法(二):签名与验签(附源码分析)

本节介绍SPHINCS+ 算法的密钥生成、签名与验签。nnn:安全参数;www:Winternitz参数,WOTS+签名分解的基底;hhh:超树的高度;ddd:超树中子树的层数;kkk:FORS 树的数量;ttt:FORS 树的叶子节点数。

听雨草堂 4680

hdu 5652 India and China Origins 并查集+BFS

hdu 5652 India and China Origins 并查集+BFS 题目链接: India and China Origins 题意:给定N*M的一个地图,1代表障碍物,0代表路,然后在Q个单位时间中,每过一个单位时间,向地图中某点添加一个障碍物,问到哪个时刻,人不能从第一行访问到最后一行。人只可以上下左右移动。如果到了Q时刻还从第一行能访问到最后一行,输出-1。 思路1:首先

Fighting! 1419

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

HDU5652India and China Origins 并查集

India and China Origins Time Limit: 2000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 118    Accepted Submission(s): 34 Problem Description A long ti

Jonariguez 吾本优秀 950

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

并查集 hdu5652 India and China Origins

传送门:点击打开链接 题意:告诉你地图的大小,每年有的地方会长出山峰,问什么时候两端开始不连通的。 思路:先到最后一年,就是长出很多山峰时开始。 之后相当于把山峰拆掉,所以就是把4个方向的空地用并查集合并,然后判断两端是否已经连通。 就这样倒着xjb搞,就能出答案了,注意点细节和输出答案的时间就行了 #include #include #include #include #inc

qwb的博客 696

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

HDU 5652 India and China Origins(并查集)

India and China Origins Time Limit: 2000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 441    Accepted Submission(s): 133 Problem Description A lo

Dacc123的博客 929

HDU 5652 India and China Origins(并查集)

题意: 中国和印度之间有一片地方,把这片地方抽象化,于是就可以看成一个N * M矩阵,其中黑色的代表高山不能走过 去,白色的代表平原,可以通行,人每次可以选择往上下左右四个方向移动,但是随着时间的变化某些白色的平原会变 成黑色的高山,从而变为不可通行,题目中给出一个代表地势的图,然后有 Q 次操作,第 i 次操作 代表在第 i 年 (x, y) 处的平原变成了高山,即白色变为了黑色。问中国

Ash.的博客 640

hdu5652 India and China Origins(并查集)

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5652 题目大意: 在n*m的矩阵里面,放值为1的山峰。当山峰连起来能够封锁整个m列的时候,问最早是什么时候。 范围: n,m 思路: 可以用并查集存下每个点能向左延伸的距离和向右延伸的距离。当有一个点为1的时候,看他8个方向是否有为1的山峰,如果有就将他们并入同一个集合,然后更新他

hahahaha 692

hdu 5652 India and China Origins (并查集)

India and China Origins Time Limit: 2000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 920    Accepted Submission(s): 313 Problem Description A long t

哇咔咔 501

HDU-5652 India and China Origins(并查集)

借鉴自:http://www.cnblogs.com/shuguangzw/p/5324207.html India and China Origins Time Limit: 2000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 1128    Acc

lljjccsskk的专栏 337

HDU 5652 India and China Origins (并查集判断联通)

题意:      给出一个n*m的图,1是山峰,0是平原,还有q个操作,可以把0变成1,问最少前几次操作可以使得图的上端和下端完全阻隔,就是被1隔开。   上下左右四个方向走。没有断绝就输出 -1 分析:      并查集判断联通,一开始只想到用dfs判断联通,然后GG了。       这题可以正着搞。判断山是否左右联通就行了(注意山是8联通的,不是平原,倒着搞就是4联通

Follow My Heart 559

hdu 5652 India and China Origins 并查集

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5652 题目大意:n*m的矩阵上,0为平原,1为山。q个询问,第i个询问给定坐标xi,yi,表示i年后这里的平原上会长出山。问第几年以后印度和中国交流会被阻碍 思路:(官方题解)这是一个连通性的问题。你会发现如果将所有操作逆序来看的话就很容易用并查集来处理了。 首先把所有的山峰都加到图中,然后逆序处...

weixin_30414155的博客 96

hdu5652 India and China Origins BFS+二分 或 二维的并查集

India and China Origins Time Limit: 2000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 1165    Accepted Submission(s): 382 Problem Description A l

EventQueue的博客 600

HDU-5652 India and China Origins(并查集)

题目: http://acm.hdu.edu.cn/showproblem.php?pid=5652 题意: 两国之间有一个n*m的棋盘,中间一开始有一些山脉,后来每年新增一个山脉,求两国第一次被彻底隔绝的时间。未被隔绝返回-1。 思路: 500*500的大小,可以展开成250000个节点求并查集,先把所有的山脉都放上去,然后处理一下并查集,就是每个节点和旁边的4个节点是否都是平地,是就

MyWorld 587
上一篇: 5650 so easy
下一篇: hdu 3397 线段树双标记
Tyuio28
博客等级 码龄11年 12粉丝 279原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值