P3820 小D的地下温泉

2024-09-03 09:52
文章标签 地下 温泉 p3820

本文主要是介绍P3820 小D的地下温泉,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

*原题链接*

这道题前前后后调了两个多小时,终于过了,细节是真的多,我几乎把所有坑都踩过了,就在此总结一下。

对于此题做法并不难想,维护集合大小和连通性,很容易想到并查集来维护,我们把二维降到一维,先预处理出每块温泉的大小,再处理操作。1操作很容易,对于2操作,如果该点是温泉,由于题中明确说将温泉变为土时不会将一个区域分割,所以直接将其所在连通块大小减1;如果是土块,需要新建一个编号表示这块地。接下来诸多我踩过的坑见代码注释

#include<bits/stdc++.h>
using namespace std;
const int N=2e6+10;//原矩阵n*m<=1e6,再加上1e6次操作,所以空间大小开2e6int n,m,q,fa[N],sz[N],c[N],tot,newpos[N];
char ch,mp[N];int cal(int i,int j){//二维降到一维,而我写成(i-1)*n+1return (i-1)*m+j;
}int find(int x){if(x!=fa[x]) fa[x]=find(fa[x]);return fa[x];
}void unionn(int a,int b){//合并操作最好单独写一个函数,不然很容易写乱int x=find(a),y=find(b);if(x==y) return;sz[x]+=sz[y],fa[y]=x;
}void init(){for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(mp[cal(i,j)]=='*'){sz[cal(i,j)]=0;continue;}//如果是土块就重置它的sz,并continueif(i-1>=1&&mp[cal(i-1,j)]=='.') unionn(cal(i,j),cal(i-1,j));if(j-1>=1&&mp[cal(i,j-1)]=='.') unionn(cal(i,j),cal(i,j-1));}}
}void solve(int pos,int x,int y){//给该地新分配一个编号,并初始化newpos[pos]=tot++,mp[pos]='.',fa[newpos[pos]]=newpos[pos],sz[newpos[pos]]=1;if(x-1>=1&&mp[cal(x-1,y)]=='.') unionn(newpos[pos],newpos[cal(x-1,y)]);if(y-1>=1&&mp[cal(x,y-1)]=='.') unionn(newpos[pos],newpos[cal(x,y-1)]);if(x+1<=n&&mp[cal(x+1,y)]=='.') unionn(newpos[pos],newpos[cal(x+1,y)]);if(y+1<=m&&mp[cal(x,y+1)]=='.') unionn(newpos[pos],newpos[cal(x,y+1)]);
}int main(){ios::sync_with_stdio(false);cin>>n>>m;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>ch;mp[cal(i,j)]=ch;}}for(int i=1;i<N;i++) newpos[i]=i,fa[i]=i,sz[i]=1;tot=cal(n,m)+1;init();cin>>q;while(q--){int opt,w;cin>>opt>>w;//接下来的操作要分清newpos数组和pos,千万不要搞混if(opt==1){int res=0,ans=1;//ans初值设为1,不要设为0,可能有都是土块的情况。for(int i=1;i<=w;i++){int x,y;cin>>x>>y;int pos=cal(x,y);if(sz[find(newpos[pos])]>res&&mp[pos]=='.') res=sz[find(newpos[pos])],ans=i;}cout<<ans<<endl;}else{for(int i=1;i<=w;i++){int x,y;cin>>x>>y;int pos=cal(x,y);if(mp[pos]=='.') mp[pos]='*',sz[find(newpos[pos])]--;else solve(pos,x,y);}}}return 0;
}

这篇关于P3820 小D的地下温泉的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1132659

相关文章

某国有文旅集团温泉酒店人才盘点项目成功案例纪实

——建立适应文旅行业特点及发展要求的人才选拔体系 【客户行业】国有企业;旅游行业;温泉度假 【问题类型】人才盘点 【客户背景】 某温泉酒店位于南方某5A级景区,是国有企业下属公司,该温泉酒店有室内室外温泉池共20余个,除温泉外,该酒店还有各种类型套房,包括:豪华套房、行政套房、标间等类型套房超过百余个,并配置会议室、多功能厅、商务中心、餐厅、健身房、特产购物中心、养生保健等设施和服务。为来

土压力计:监测地下压力变化的必备工具

在土木工程、地质勘探和地下建筑等领域,地下土壤的力学特性对工程的稳定性和安全性起着至关重要的作用。而土压力计作为一种重要的监测设备,能够准确地测量地下土壤的压力变化,为工程设计和施工提供关键数据。本文将探讨土压力计的原理、应用以及在工程领域中的重要性。   土压力计的原理   土压力计是一种用于测量土体内部压力的仪器。其工作原理基于地下土壤的应力分布和变化规律,通过传感器或压力传递

宏电“窨井卫士”家族成员大公开:城市地下生命线安全守卫者

窨井是城市建设中非常重要的基础设施 井内的水位、流量、水质情况 能直观反映城市排水管网的运行状态 秉承宏电智能感知技术的积累与沉淀 针对窨井水位、流量、水质监测领域 宏电“窨井卫士”家族产品各显神通 为窨井安全运行保驾护航 窨井水位监测卫士 H1600D智能水位监测站 采用接触式和非接触式相结合的一体化水位站产品,集水位测量、采集、存储、控制、通信和远程管理等功能于一

SUPS:一种用于自动驾驶的仿真地下泊车场景数据集

SUPS:一种用于自动驾驶的仿真地下泊车场景数据集 附赠自动驾驶学习资料和量产经验:链接 摘要 本文介绍了SUPS:一种用于自动驾驶的仿真地下泊车场景数据集。随着自动驾驶的范围扩大,自动地下泊车引起了人们极大的关注。自动驾驶汽车应该获取环境信息、跟踪其位置,并且构建可靠的场景地图。主流解决方案包括经过良好训练的神经网络以及同时定位和见图(SLAM)方法,这些方法需要大量精心标注的图像和多

NASA数据集——1983 ——2016 年期间北美森林地点的野外地块特征数据、衍生的地上和地下燃烧碳以及获取的火灾气象指数(FWI)

文件修订日期:2022-05-04 数据集版本: 1 简介 该数据集综合了 1983 年至 2016 年期间美国阿拉斯加、西北地区和加拿大萨斯喀彻温省被烧毁的北方森林地点的野外地块特征数据、衍生的地上和地下燃烧碳以及获取的火灾气象指数(FWI)系统组件。此外还包括未烧毁地块的数据。编译的地块级特征数据包括林分年龄、干扰历史、树木密度和树木生物物理测量值,用于计算地上(ag)和地下(bg)生物

43、总建筑面积大于20000㎡的地下或半地下建筑的防火要求

总建筑面积大于20000㎡的地下或半地下商店或商场等建筑的防火要求如下: 一、分割区域:   将整个建筑分割为多个建筑面积不大于20000㎡的区域,分割方式有以下两种:   1、采用无门、窗、洞口的防火墙   2、采用耐火极限不低于2.00h的楼板 二、分割区域后,相邻区域确需局部连通时,可采用以下几种方式进行连通:   1、下沉式广场等室外敞开空间,并满足以下要求:     1.1、防止相邻区

linux 地下安装jboss并设置自动启动

1、安装JDK 先安装JDK,这里使用的是JDK1.5.0.06 2、设置JDK环境变量 1)编辑系统环境变量文件/etc/profile vi /etc/profile 添加如下内容: #SET JAVA ENVIRONMENT JAVA_HOME=/usr/java/jdk1.5.0_06     #配置jdk路径 PATH=$PATH:$JAVA_HOME/bin CLASSPATH=.:

java/php/net/python商场地下停车场寻车app【2024年毕设】

本系统带文档lw万字以上 文末可领取本课题的JAVA源码参考 开发环境 开发语言:Java 框架:ssm 技术:ssm+vue JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7或8.0 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven3.3.9 浏览器:建议谷歌浏览器或edge

地下管线管网三维建模工具MagicPipe3D V3.4.2发布

经纬管网建模系统MagicPipe3D,本地离线参数化构建地下管网三维模型(包括管道、接头、附属设施等),输出标准3DTiles服务、Obj模型等格式,支持Cesium、Unreal、Unity、Osg等引擎加载进行三维可视化、语义查询、专题分析,提供单机和Usb狗2种许可方式!2024年MagicPipe3D V3.4.2 持续更新,欢迎下载试用:http://www.magic3d.net

WebGL+ArcGIS JS API实现Web城市地下管线三维场景浏览

注:转载请注明出处 WebGL发展的如火如荼,未来的WebGIS也应该体现3D的趋势,本人的本科毕业论文是《Web城市地下管线三维场景浏览技术研究》,通过ArcGIS JS API获取地理数据,然后用WebGL框架Three.js将该地理数据进行三维展示。 本论文主要具有以下创新点: (1)在传统的WebGIS的基础上,借助于主流的IT技术(WebGL)实现了在传统网页中嵌入三维GIS模