当前位置: 首页 > news >正文

洛谷P16221 [ECUSTPC 2025] 净化行动题解

思路

可以发现,如果同一行或同一列上有两个及以上黑子,那么白字吃掉其中一个黑子时,另一个黑子会把白子吃掉,此时直接输出NO即可。

否则,考虑求出起点左边第一个有黑子的列、右边第一个有黑子的列、上边第一个有黑子的行、下边第一个有黑子的行,即从起点位置目前可以到达的位置一定是一个矩形。

如果矩形的四个顶点有至少一个是黑子,我们就可以通过斜跳把黑子吃掉。否则,如果矩形的四个顶点没有一个是黑子,白子就走不了了,直接输出NO即可。

代码

#include<bits/stdc++.h>usingnamespacestd;constintN=3e5+5;intt,n;map<int,bool>mp,mpp;structjs{intx,y,id;};vector<js>a,b;boolcmp1(js x,js y){returnx.x<y.x;}boolcmp2(js x,js y){returnx.y<y.y;}boolbj[N];intmain(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);cin>>t;while(t--){cin>>n;mp.clear(),mpp.clear(),a.clear(),b.clear();intnx,ny;cin>>nx>>ny;for(inti=1;i<=n;i++)bj[i]=0;boolflag=0;for(inti=1;i<=n;i++){intx,y;cin>>x>>y;if(mp[x]||mpp[y])flag=1;a.push_back({x,y,i}),b.push_back({x,y,i}),mp[x]=mpp[y]=1;}sort(a.begin(),a.end(),cmp1);sort(b.begin(),b.end(),cmp2);if(flag){cout<<"NO\n";continue;}intxl=-1,xr=a.size(),yl=-1,yr=b.size(),cnt=n;for(inti=0;i<a.size();i++)if(a[i].x<=nx)xl=i;for(inti=0;i<b.size();i++)if(b[i].y<=ny)yl=i;for(inti=a.size()-1;i>=0;i--)if(a[i].x>=nx)xr=i;for(inti=b.size()-1;i>=0;i--)if(b[i].y>=ny)yr=i;intnum=0;while(cnt--){while(xl>=0&&bj[a[xl].id])xl--;while(yl>=0&&bj[b[yl].id])yl--;while(xr<a.size()&&bj[a[xr].id])xr++;while(yr<b.size()&&bj[b[yr].id])yr++;if(xl>=0&&(yl<0||a[xl].y>=b[yl].y)&&(yr>=b.size()||a[xl].y<=b[yr].y)){bj[a[xl].id]=1,xl--,num++;continue;}if(xr<a.size()&&(yl<0||a[xr].y>=b[yl].y)&&(yr>=b.size()||a[xr].y<=b[yr].y)){bj[a[xr].id]=1,xr++,num++;continue;}if(yl>=0&&(xl<0||a[xl].x<=b[yl].x)&&(xr>=a.size()||a[xr].x>=b[yl].x)){bj[b[yl].id]=1,yl--,num++;continue;}if(yr<b.size()&&(xl<0||a[xl].x<=b[yr].x)&&(xr>=a.size()||a[xr].x>=b[yr].x)){bj[b[yr].id]=1,yr++,num++;continue;}break;}if(num==n)cout<<"YES\n";elsecout<<"NO\n";}return0;}
http://www.jsqmd.com/news/866498/

相关文章:

  • Claude Code 用户如何配置 Taotoken 解决封号与 Token 不足问题
  • 宣城互联网推广,究竟藏着怎样的营销秘诀?
  • 2026 中国高强镁合金厂商横向测评:六家主力玩家,谁在哪条赛道领跑?
  • 5分钟快速搭建通达信缠论分析系统:ChanlunX终极实战指南
  • 【ElevenLabs方言语音落地实战】:贵州话TTS模型微调、音色克隆与低延迟部署全链路指南
  • # 2026年西藏旅游团体验哪家好?导游服务与口碑评价深度对比 - 科技焦点
  • C++中stack的用法
  • Esp32Robot入门05-大模型接口对接与配置(实战进阶:对接Qwen3.6-35B本地大模型与API配置实战)
  • “一键生成”这四个字,骗了多少人
  • 2026计算机人士提升个人价值分析
  • # 西藏旅游团选哪家?2026年线路覆盖与服务模式解析 - 科技焦点
  • 外卖系统源码如何选择?校园外卖APP+小程序平台搭建指南
  • SCI论文中的地图与空间分析:ArcGIS Pro在水文水环境研究中的完整应用
  • NVIDIA Profile Inspector完全指南:解锁显卡700+隐藏设置,游戏性能提升30%
  • 华为发布AI DC数据基础设施全栈方案,重构AI时代数据底座
  • Antigravity cli 体验很差
  • 数学专业学数据分析的价值
  • NotebookLM多语言文档处理失效?立即检查这4个元数据字段——2024年Q2最新API行为变更已悄然上线
  • 三国杀卡牌DIY终极指南:5分钟打造你的专属武将
  • VSCode 打开超大日志文件卡顿崩溃怎么优化设置
  • 房地产Agent部署AI助手失败率高达68%?揭秘头部房企私有化部署的4层安全架构与合规红线(内部培训纪要流出)
  • 今年小满不一般,老辈农谚里藏着农事提醒
  • Spek音频频谱分析器:如何免费快速可视化音频频率的秘密世界
  • 十年机房从业者转行网安,从月薪五千逆袭年入百万
  • Subfinder终极指南:告别手动搜索,3分钟掌握高效字幕下载技巧
  • SQL 模糊查询 + NULL 空值。LIKE 通配符 % 和_、IS NULL
  • 从零基础到PPT大神,打造专业高颜值演示文稿
  • 沧州各区房屋反复漏水真实原因解析:多数维修问题出在工艺匹配度 - 鲁顺
  • LeagueAkari:英雄联盟玩家的智能工具箱完整指南
  • 添价收广州名表回收首选推荐:六家机构精准匹配,你的腕表该去哪家最划算 - 薛定谔的梨花猫