“金山-讯飞”杯2024年武汉理工大学程序设计竞赛 A. Mobiusp败走***(思维题-点双连通分量、连通性)
题目

思路来源
官方题解

题解
手玩发现,能换的话,当且仅当.和1在一个环里,而这就是点双连通分量
所以最优策略是先把.换到(x,y)的位置,然后判断.和1在不在一个环里
也就是:
1. 判断删掉1时,.和(x,y)联通
2. 判断(x,y)和1在同一个连通分量里
这个和三者在同一个连通分量不等价,可以参考下图:
.和1并不在一个点双里,但是可以先把.换到(1,2)的位置里,使之在同一个点双里
3 3
1 2
#**
**1
.##
代码
#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(int i=(a);i<=(b);++i)
#define per(i,a,b) for(int i=(a);i>=(b);--i)
typedef long long ll;
typedef double db;
typedef pair<int,int> P;
#define fi first
#define se second
#define pb push_back
#define dbg(x) cerr<<(#x)<<":"<<x<<" ";
#define dbg2(x) cerr<<(#x)<<":"<<x<<endl;
#define SZ(a) (int)(a.size())
#define sci(a) scanf("%d",&(a))
#define pt(a) printf("%d",a);
#define pte(a) printf("%d\n",a)
#define ptlle(a) printf("%lld\n",a)
#define debug(...) fprintf(stderr, __VA_ARGS__)
using namespace std;
const int N=1500*1500+5,M=1500*1500*4+5,K=1502;
int n,m,u,v,ex,ey,blk,one,ed;
int low[N],dfn[N],tot,tp,cnt;
vector<P>stk;
bool vis[N];
char s[K][K];
vector<int>e[N];
int f(int x,int y){return x*m+y;
}
void add(int x,int y){e[x].pb(y);
}
bool dfs(int u,int fa){low[u]=dfn[u]=++tot;int ch=0;for(auto &v:e[u]){if(!dfn[v]){stk.pb(P(u,v));//记录当前BCC的边if(dfs(v,u))return 1;ch++;//从u这里向下dfs的子树的数量low[u]=min(low[u],low[v]);if(low[v]>=dfn[u]){//割点ubool ok1=0,ok2=0;for(;;){P x=stk.back();stk.pop_back();int y=x.fi,z=x.se;ok1|=(y==one);ok2|=(y==ed);ok1|=(z==one);ok2|=(z==ed);//printf("one:%d ed:%d\n",y,z);if(ok1 && ok2)return 1;if(y==u && z==v)break;}}}else if(v!=fa && dfn[v]<dfn[u]){stk.pb(P(u,v));low[u]=min(low[u],dfn[v]);}}return 0;
}
bool dfs2(int u){vis[u]=1;if(u==blk)return 1;for(auto &v:e[u]){if(vis[v] || v==one)continue;if(dfs2(v))return 1;}return 0;
}
bool sol(){sci(n),sci(m);sci(ex);sci(ey);ex--;ey--;rep(i,0,n-1){scanf("%s",s[i]);}rep(i,0,n-1){rep(j,0,m-1){if(s[i][j]=='#')continue;int x=f(i,j);if(s[i][j]=='1')one=x;if(s[i][j]=='.')blk=x;if(i-1>=0 && s[i-1][j]!='#'){int y=f(i-1,j);//printf("x:%d y:%d\n",x,y);add(x,y);add(y,x);}if(j-1>=0 && s[i][j-1]!='#'){int y=f(i,j-1);//printf("x2:%d y2:%d\n",x,y);add(x,y);add(y,x);}}}ed=f(ex,ey);if(one==ed)return 1;if(!dfs2(ed))return 0;rep(i,0,n-1){rep(j,0,m-1){if(s[i][j]=='#')continue;int x=f(i,j);if(!dfn[x] && dfs(x,-1))return 1;}}return 0;
}
int main(){puts(sol()?"Yes":"No");return 0;
}
相关文章:
“金山-讯飞”杯2024年武汉理工大学程序设计竞赛 A. Mobiusp败走***(思维题-点双连通分量、连通性)
题目 思路来源 官方题解 题解 手玩发现,能换的话,当且仅当.和1在一个环里,而这就是点双连通分量 所以最优策略是先把.换到(x,y)的位置,然后判断.和1在不在一个环里 也就是: 1. 判断删掉1时,.和(x,y)联…...
【机器翻译】基于术语词典干预的机器翻译挑战赛
文章目录 一、赛题链接二、安装库1.spacy2.torch_text 三、数据预处理赛题数据类定义 TranslationDataset批量处理函数 collate_fn 四、编码器和解码器Encoder 类Decoder 类Seq2Seq 类注意事项 五、主函数1. load_terminology_dictionary(dict_file)2. train(model, iterator, …...
推荐系统:从协同过滤到深度学习
目录 一、协同过滤(Collaborative Filtering, CF)1. 基于用户的协同过滤2. 基于物品的协同过滤 二、深度学习在推荐系统中的应用1. 深度学习模型的优势2. 深度学习在推荐系统中的应用实例 三、总结与展望 推荐系统是现代信息处理和传播中不可或缺的技术&…...
记录些Spring+题集(1)
接口防刷机制 接口被刷指的是同一接口被频繁调用,可能是由于以下原因导致: 恶意攻击:攻击者利用自动化脚本或工具对接口进行大量请求,以消耗系统资源、拖慢系统响应速度或达到其他恶意目的。误操作或程序错误:某些情…...
SpringBoot 解决 getSession().getAttribute() 在负载均衡环境下无法获取session的问题
在Spring Boot中,使用getSession().getAttribute()方法时遇到在负载均衡环境下无法正确获取session属性的问题,通常是由于session属性存储在单个服务器的内存中,而负载均衡会导致用户的请求被分配到不同的服务器上,因此无法找到在…...
Jmeter常用组件及执行顺序
一 常用组件 1.线程组 Thread Group 线程组是一系列线程的集合,每一个线程代表着一个正在使用应用程序的用户。在 jmeter 中,每个线程意味着模拟一个真实用户向服务器发起请求。 在 jmeter 中,线程组组件运行用户设置线程数量、初始化方式等…...
PTrade常见问题系列10
get_ashares获取list为空。 get_Ashares函数目前都是向行情服务器进行获取的 如果请求数过多,应答返回偶现为空现象, 后续版本内进行优化从服务器缓存内取,需求单号:202303213922,于PTradeQT1.0V202202.01.023内发布…...
数据结构(4.4)——求next数组
next数组的作用:当模式串的第j个字符失配时,从模式串的第next[j]的继续往后匹配 求模式串的next数组(手算) next[1] 任何模式串都一样,第一个字符不匹配时,只能匹配下一个子串,因此,往后,next[1]都无脑写…...
《mysql篇》--JDBC编程
JDBC是什么 JDBC就是Java DataBase Connectivity的缩写,翻译过来就很好理解了,就是java连接数据库。所以顾名思义,JDBC就是一种用于执行SQL语句的JavaApl,是Java中的数据库连接规范。为了可以方便的用Java连接各种数据库ÿ…...
android studio 怎么下载 buildTool
在Android Studio中下载Build Tools,通常可以通过Android Studio内置的SDK Manager来完成。以下是详细的步骤: 一、通过Android Studio的SDK Manager下载Build Tools 启动Android Studio:首先,确保你已经安装了Android Studio&am…...
copy 和 mutableCopy 有点乱
字符串的拷贝操作 对 string literal (字符串字面量) 执行 copy 要打印指针指向对象的地址和指针本身的地址,可以使用 %p 格式符来输出指针地址。以下代码,展示了 originalString 和 copiedString 的指针地址和指向对象的地址: NSString *…...
sqlalchemy通过查询参数生成query
sqlalchemy通过查询参数生成query 在SQLAlchemy中,可以使用查询参数来动态生成查询。这通常通过使用.filter()方法和Python的比较运算符来实现。以下是一个简单的示例,展示如何使用查询参数生成查询: 假设我们有一个名为User的模型(表),它具有id、username和email字段。…...
【JavaScript 算法】二分查找:快速定位目标元素
🔥 个人主页:空白诗 文章目录 一、算法原理二、算法实现三、应用场景四、优化与扩展五、总结 二分查找(Binary Search)是一种高效的查找算法,适用于在有序数组中快速定位目标元素。相比于线性查找,二分查找…...
论文研读:ViT-V-Net—用于无监督3D医学图像配准的Vision Transformer
目录 摘要 介绍 方法 VIT-V-Net体系结构 损失函数 图像相似性度量 变形场正则化 结果与讨论 摘要 在过去的十年里,卷积神经网络(ConvNets)在各种医学成像应用中占据了主导地位并取得了最先进的性能。然而,由于缺乏对图像中远程空间关系的理解&a…...
C++入门到进阶(图文详解,持续更新中)
C入门到进阶(图文详解,持续更新中) 详解C入门知识到进阶,配合图观看易于理解记录 文章目录 目录 C入门到进阶(图文详解,持续更新中) 文章目录 前言 一、数据 (一)数据类…...
【React Hooks原理 - useRef】
概述 在Function Component项目中当我们需要操作dom的时候,第一时间想到的就是使用useRef这个Hook来绑定dom。但是这个仅仅是使用这个Hook而已,为了更好的学习React Hooks内部实现原理,知其所以然。所以本文根据源码从useRef的基础使用场景一…...
MVC之 IHttpModule管道模型《二》
》》》注意:在http请求的处理过程中,只能调用一个HttpHandler,但可以调用多个HttpModule。 HTTP Modules ASP.NET请求处理过程是基于管道模型的,这个管道模型是由多个HttpModule和HttpHandler组成,当请求到达HttpMod…...
2025上海纺织助剂展会+上海织物整理剂展
2025上海纺织助剂展会上海织物整理剂展 2025第十二届中国(上海)纺织助剂及织物整理剂展览会 时间: 2025年4月23-25日 地点:上海跨国采购会展中心(光复西路2739号) 展会简介: 2025第12届中国(上海&#…...
中科亿海微亮相慕尼黑上海电子展
7月8-10日,备受瞩目的全球电子行业盛会“慕尼黑上海电子展”以空前规模启幕,汇聚了超过1600家参展企业,涵盖了从终端产品制造商到元器件供应商、组装/系统供应商、EMS、ODM/OEM、材料供应商及生产设备供应商的完整产业链。中科亿海微电子科技…...
Spring boot 2.0 升级到 3.3.1 的相关问题 (一)
文章目录 Spring boot 2.0 升级到 3.3.1 的相关问题 (一)拦截器Interceptor的变动问题介绍解决方案 WebMvcConfigurerAdapter 自定义Mvc配置问题介绍解决方案 Spring boot 2.0 升级到 3.3.1 的相关问题 (一) 拦截器Interceptor的…...
Java 21 新特性概览与实战教程
JDK 21 是继 JDK 17 之后的又一个长期支持(LTS)版本,于 2023 年 9 月发布。它被誉为 Java 历史上最具变革性的版本之一,特别是虚拟线程的引入,彻底改变了 Java 在高并发领域的编程模型。相比 JDK 17,JDK 21…...
消费级GPU福音:百川2-13B-4bits+OpenClaw自动化测试报告
消费级GPU福音:百川2-13B-4bitsOpenClaw自动化测试报告 1. 为什么选择这个组合? 去年冬天,我盯着显卡监控软件里跳动的显存占用数字,突然意识到一个问题:大多数开源大模型对消费级GPU太不友好了。动辄20GB以上的显存…...
你的CSP策略真的安全吗?手把手教你用Google的Nonce方案改造网站(附Tranco万站爬虫分析)
你的CSP策略真的安全吗?Google Nonce方案实战指南与行业适配性解析 当安全团队在年度审计报告中标注"内容安全策略配置不当"时,许多开发者才惊觉自己的防护体系存在致命漏洞。传统CSP(内容安全策略)部署的复杂性就像试图…...
Servo_TCA:基于AVR TCA硬件PWM的零抖动伺服控制库
1. Servo_TCA 库概述:面向现代 AVR 架构的硬件 PWM 伺服控制方案Servo_TCA 是一个专为新一代 8 位 AVR 微控制器设计的高性能伺服驱动库,其核心目标是彻底消除传统软件定时伺服库中普遍存在的脉冲抖动(jitter)问题。该库并非对 Ar…...
中小卖家最怕买“大而全”,真正需要的是“刚刚好”的自动化方案
很多中小卖家一听到“AI自动化”“全链路智能体”这些词, 心里会先紧张一下。 不是不感兴趣, 而是怕另一个问题: 看起来很强,但太大了; 功能很多,但太重了; 概念很全,但不一定适合自…...
数学建模实战书籍精选:从入门到竞赛的全方位指南
1. 为什么你需要一本好的数学建模书? 数学建模就像学做菜,光看菜谱不动手永远成不了大厨。我见过太多同学抱着《高等数学》死磕,结果遇到实际问题连最简单的线性规划都写不出来。一本好的实战书能帮你少走三年弯路——当年我第一次参加国赛&a…...
PADS Layout 设计规则优化:从安全间距到布线效率的实战指南
1. PADS Layout设计规则入门:为什么它比你想的更重要 刚接触PADS Layout的工程师常犯的一个错误,就是直接开始画板子,完全跳过设计规则设置。这就像开车不系安全带——短途可能没事,但迟早要出事。我见过太多因为间距设置不当导致…...
2026年4月最新:全职作者深度测评8款AI写长篇小说专业工具,谁能打破“吃设定”与“机器味”魔咒?
到了2026年4月,网文圈的生产方式已经发生了根本性的重构。现在的全职作者,早就不只是单纯地在键盘前死磕字数了。为了在这个极其内卷的市场中活下来,我们不仅要保证每天稳定的更新量,还要考虑 IP 的后续孵化——比如把高光剧情快速…...
终极指南:如何使用snabbt.js创建惊艳的Web动画效果
终极指南:如何使用snabbt.js创建惊艳的Web动画效果 【免费下载链接】snabbt.js Fast animations with javascript and CSS transforms 项目地址: https://gitcode.com/gh_mirrors/sn/snabbt.js 在当今的Web开发领域,snabbt.js作为一款极简主义的J…...
重构魔兽争霸III地图编辑:HiveWE的技术革新与性能突破
重构魔兽争霸III地图编辑:HiveWE的技术革新与性能突破 【免费下载链接】HiveWE A Warcraft III world editor. 项目地址: https://gitcode.com/gh_mirrors/hi/HiveWE 行业痛点:传统地图编辑器的技术瓶颈 魔兽争霸III地图创作者长期受限于原版编辑…...
