洛谷 P7380 [COCI 2018/2019 #6] Konj 题解

news/2025/10/20 19:17:58/文章来源:https://www.cnblogs.com/Atserckcn/p/19153474

P7380 [COCI 2018/2019 #6] Konj 题解

题目传送门。

题意

给定 \(n\) 条线段两端端点坐标,保证一定与 \(x\) 轴或 \(y\) 轴平行。求最小的矩阵能表示出从点 \(T\) 出发到达的所有点。

如果两条线段相交或间接可以走到则称这两条线段相连。

思路

注意到虽然 \(n\) 十分之大,但端点坐标却在 \(0\sim 300\) 之间,所以可以考虑维护点。

不难想到对于每条线段,都在图上打上标记,表示这条线段的存在。最后再从点 \(T\) 出发,搜索搜一下就可以得到答案矩阵。

即对于每个点 \((x,y)\),若有至少一条线段经过,则 vis[x][y]=1。最后搜索时就从点 \(T\) 遍历四连通块即可。

但这样显然是不行的。因为如果两条线段相邻但不相交,但搜索时会被判为联通。

hack 如下:

...*
...*
####

其中 #* 代表不同的两条线段。且两条线段没有交点。

那么如何优化?

注意到四个方向并不多,可以对于每个点判断四个方向可不可以走。

显然如果在一条线段内,那么是可以按照这条线段的走向走的,即有两个方向可以走。

显然如果是线段的端点,则只有一个方向可以走,特判一下就行啦。

最后因为题目中的 \(y\) 坐标是按照平面直角坐标系来的,所以输出的时候要注意一下。

因为题目还要求说是最小的矩阵,所以在搜索中维护一下 \(x\) 坐标和 \(y\) 坐标的最大最小值即可。

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5,M=305,nxt[4][2]={{0,1},{1,0},{-1,0},{0,-1}};
int n,Tx,Ty,maxx,maxy,minx=305,miny=305;
bool g[M][M][5];//1 up 2 down 3 left 4 right
bool vis[M][M];
struct L{int x1,y1,x2,y2;
}l[N];
void addg(int i)
{int x1=l[i].x1,x2=l[i].x2,y1=l[i].y1,y2=l[i].y2;if(x1==x2)// // y {if(y1<y2)swap(y1,y2);//方便起见g[x1][y1][2]=1;g[x1][y2][1]=1;for(int y=y2+1;y<y1;++y)g[x1][y][1]=g[x1][y][2]=1;//竖着走的线段可以上下两边return;}// // xif(x1>x2)swap(x1,x2);//方便g[x1][y1][4]=g[x2][y1][3]=1;for(int x=x1+1;x<x2;++x)g[x][y1][3]=g[x][y1][4]=1; //横着走的线段可以左右两边return;
}
void dfs(int x,int y)
{vis[x][y]=1;maxx=max(maxx,x);minx=min(minx,x);maxy=max(maxy,y);miny=min(miny,y);for(int i=0;i<4;++i){int tx=x+nxt[i][0],ty=y+nxt[i][1];if(tx<0||tx>300||ty<0||ty>300||vis[tx][ty])continue;if(!i)//upif(!g[x][y][1])continue;if(i==1)//rightif(!g[x][y][4])continue;if(i==2)//leftif(!g[x][y][3])continue;if(i==3)//downif(!g[x][y][2])continue;dfs(tx,ty);}return;
}
int main(){ios::sync_with_stdio(0);cin>>n;for(int i=1;i<=n;++i)cin>>l[i].x1>>l[i].y1>>l[i].x2>>l[i].y2;cin>>Tx>>Ty;for(int i=1;i<=n;++i)addg(i);dfs(Tx,Ty);for(int y=maxy;y>=miny;--y)//注意啦!!是按照平面直角坐标系的y坐标{for(int x=minx;x<=maxx;++x)cout<<(vis[x][y]?'#':'.');cout<<'\n';}return 0;
}

AC 记录。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/941514.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

意大利居留 办理 看小红书上的材料就行,部分材料可以到按手印再补交

到了邮局之后 取个寄信号 我的是P开头 然后给他信封和材料 最后签3个名字 然后刷卡100零几欧 输入pin码 ok

机器学习领导者分享AI技术与行业洞见

本文介绍了某中心机器学习业务负责人在人工智能领域的专业见解,涵盖分布式模型训练、自然语言处理、计算机视觉等技术应用,以及AI行业发展趋势和人才培养策略,为技术从业者提供有价值的参考。Allie K. Miller希望帮…

el-upload上传配合$confirm使用的问题

现象:el-upload如果再on-remove,先调用$confirm 点了取消,也删了文件。 解决方案: 1、使用:before-remove钩子<el-uploadref="upload"class="m-l-10":limit="1"action="&qu…

博客的意義

我大概就是想寫成遊寄?個人總結?還是其他隨意的? 我補檔前面的個人總結。

我写过的动态规划问题的状态表示与转移汇总

众所周知,在写 dp 问题时只要想出来状态表示和转移方程就能把一道题写的差不多了,所以在这里整理一下我写过的 dp 问题的解法,方便我后面举一反三 背包动态规划 线性动态规划 Luogu P1359 租用游艇 橙 题目链接\(n\…

基于大语言模型的具身智能语义地图与导航研究 - MKT

基于大语言模型的具身智能语义地图与导航研究https://www.gml.ac.cn/kydt/694.html https://www.gml.ac.cn/kydt/694.html

10.20 CSP-S模拟35 改题记录

水水HZOJ 写在前面 改不出来T3T4,遂先把这个写了,然后晚上搞搞恐怖的容斥qwq。这场模拟赛不多做评价,我不知道是我菜还是题史,虽然大概率是两者都有。《美人》 한 번 보고 두 번 보고 一眼 再一眼 자꾸만 보고 싶네…

例子:vue3+vite+router创建导航菜单

第一部分 1、初始化项目npm init vite@latestnpm run dev :运行项目 q+Enter:退出运行 2、安装路由依赖npm install vue-router@4 # Vue3 对应 vue-router 4.x 版本 第二部分: 创建页面组件 在 src/views 目录下创…

欧盟数字公平法案

欧盟数字公平法案Posted on 2025-10-20 18:54 mainfoll 阅读(0) 评论(0) 收藏 举报不公平的数字商业实践

LGR-246 解题报告

T1 很水的计数。 T2 注意到如果满足分割条件,那么选取的点需要满足一下要求:所有分割点的深度相同:因为如果不满足这一点,我们可以进行分类讨论:如果存在深度比其他点小的点,那么它一定是 \(b_1\),又因为其他点…

10.7万条轨迹+4大机器人构型!RoboMIND开源数据集破解机器人通用操作难题

开发鲁棒且通用的操作策略是机器人领域的关键目标。为实现有效的泛化能力,构建包含大量演示轨迹和在复杂真实环境中完成多样化任务的综合数据集至关重要。01 | 引入 开发鲁棒且通用的操作策略是机器人领域的关键目标。…

[图形]StructureBuffer

核心概念与特点 任意结构 (Arbitrary Structure): 这是它与纹理(Texture)最大的不同。纹理存储的是固定格式的数据(比如RGBA颜色值),而StructuredBuffer可以存储你自定义的任何C++或HLSL中的struct(结构体)。 …

【题解】洛谷 P3395 路障

这道题是一道简单的BFS的题。 我们注意到这道题最不一样的地方是:每秒结束的时刻,C君会在\((x,y)\)上摆一个路障。B君不能走在路障上。 定义一个\(vis\)数组(bfs基本做法),将没有走过的点\(vis[x][y]\)设置为\(0\…

(薛定谔のCSP-S)模拟35 2025.10.20

咕掉好几场墨泥塞的僵尸来颓题解惹 因为想等大 ~蛇 ~们 ~改完之后再改(根本不会) rt: 你说这是吃薯片-S? 我还是跳楼来的比较快。 这题太**的神秘了,看上去都可做实际上(我)都写不出来。 sssssssssssssad。 A. …

2025最新发布|中国薪酬SaaS软件市场分析及测评

在数字经济浪潮的推动下,中国企业的薪酬管理正经历一场深刻的数字化变革。传统的薪酬管理模式面临效率低下、数据孤立、决策滞后等挑战,已难以适应快速变化的业务需求。同时,中国HR SaaS市场规模持续扩大,智能化和…

CSP-S模拟36

CSP-S模拟36 希望不是大奋。以下是博客签名,正文无关 本文来自博客园,作者:Wy_x,转载请在文首注明原文链接:https://www.cnblogs.com/Wy-x/p/19153400 版权声明:本作品采用「署名-非商业性使用-相同方式共享 4.0…

热点、排版、数据难题?6 款微信编辑器实测推荐

热点、排版、数据难题?6 款微信编辑器实测推荐新媒体人别再“瞎忙”!6款编辑器实测:壹伴AI编辑器才是效率解药 “为了赶热点熬到凌晨,排版反复调整却还是乱码;发完文章只能等数据‘躺平’,不知道哪里要优化;跨平…

AI建的网站,真的对SEO友好吗?深度剖析其优势与潜在缺陷

在AI技术席卷各行各业的今天,“AI建站”已成为众多企业及个人创作者快速触网的首选。然而,一个核心疑虑始终萦绕在许多人心中:这种由机器自动生成的网站,真的对搜索引擎友好吗? 作为一名与代码和搜索引擎打交道的…

追忆

1 我常常追忆过去。 生命瞬间定格在脑海。我将背后的时间裁剪、折叠、蜷曲,揉捻成天上朵朵白云。 云朵之间亦有分别:积云厚重,而卷云飘渺。生命里震撼的场景掠过我的思绪便一生无法忘怀,而更为普通平常的记忆在时间…

高效增量综合

1、什么是增量综合?增量综合的核心思路是:只针对发生变化的设计模块进行重新综合,而非全部重合成。这种策略在大型设计与频繁迭代场景下,能够显著缩短综合时间。 2、关键技术与实践效益 I. 选择性重合成(Selectiv…