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

题解:NFLSOI#P10008. Speike和Tom

众所周知,Speike 狗是一条特别喜欢追着 Tom 打的狗。

现在,Tom 又把 Speike 惹生气了,现在 Speike 需要跨越千山万水找 Tom 报仇。

Speike 所在的世界可以看成是一个无穷大的平面,平面由一个平面直角坐标系确定。在平面上有许多不相交的矩形障碍,矩形的四边平行于坐标轴。

Speike 需要从 \((0,0)\) 出发,按恒定的速率在尽量短的时间内跑到 \((0,X_t)\) ,也就是 Tom 在的位置。出题人规定,Speike 只能沿着平行于坐标轴的方向运动,且不能进入矩形障碍的内部,但是可以在障碍边界上移动。

所有障碍的横坐标都在 \([0,X_t]\) 之内。保证矩形不相交(即没有公共面积,或者说公共面积为 0,但是可能共享一条边或者一个顶点),也不会退化成线段或者点。

Speike 的智商不是很高,因此他需要你帮忙设计一条最短的路线。当然,你只需要告诉他路线的长度就行了。

输入描述

  • 第一行一个整数 \(n\),代表障碍的个数。
  • 第二行一个整数 \(X_t\),代表终点的横坐标。
  • 第三行开始,共 \(n\) 行,每行 4 个整数 \(a,b,c,d\) ,代表每个矩形的某两个相对的顶点的坐标为 \((a,b)\)\((c,d)\)

输出描述

  • 共一行,一个整数,代表最短路线的长度。

\(\mathcal {SOLUTION}\)

我们可能会很开心地想到一个很假的做法来通过前面两个样例,也就是排除掉没有经过x轴的那些矩形,然后去找y坐标大于和小于零的情况下的两个最大值,然后去两个里面的小的那个,乘二加上 \(X_t\)

一眼假,错误性读者自证。

我们考虑正解,SXHdalao orz写了一个线段树维护DP,一个小时后他告诉我他假了。

但是不是不能使用我们的错解的想法:我们已经到过一个更高的点,那么我们肯定不需要再下沉去撞上一些不该撞的东西了。但是我们一开始在 \((0,0)\) 所以我们肯定是要往上( \(|y|\) 大的地方)走的,所以我们到一个“下一个块”的时候,我们往回看,找到那些高度比现在这个小的那些块,DP 它(言简意赅)。我们取那些块中能用最小代价到这个块的值,作为当前块的 DP 值。

这里有个关键性质,speike 需要一直往右走,不可能往左走,不然肯定不优,而且往右的总路程必定为 \(x_t\),那么能决定我们答案大小的值只会是在 \(y\) 轴上移动的距离。

我们思路已经基本清晰,那么先预处理所有的块,我们拿它的左右上下轮廓来表示这个矩形 \(\{xl,xr,yl,yr\},xl<xr,yl<lr\)。我们按照 \(xl\) 的大小升序排列,然后 \(1\)~\(\operatorname {n}\) 遍历。在一个 set 里面我们不需要存一整个块,不然数据比较复杂不好维护,我们要存一条单独的横向的(与 x 轴平行的)边的 y 值与从 \((0,0)\) 到它的最小距离。

遍历的过程中我们到第 \(i\) 个块的时候,从当前的 set 里面取出 lower_bound({a[i].yl,0}) 设为边 \(j\) (为什么是 \(a[i].yl\)? 其实是哪个都无所谓,我们选取一条作为主旋律而已), 然后得出它到块 \(i\) 的上边与下边的 \(y\) 轴相应数值,直接把这个边 \(j\) 去覆盖掉( erase 大法好!):

\[\mathcal{\Delta h_{below}=|a[i].y_{below}-y_j|}\\ \mathcal{\Delta h_{above}=|a[i].y_{above}-y_j|}\\ \mathcal{dp_{i_{below}}=\min \{\ \Delta h_{below}+dp[j]\ \} }\\ \mathcal{dp_{i_{above}}=\min \{\ \Delta h_{above}+dp[j]\ \} }\\ \]

我们最后简单地发现答案是:

\[\forall i\in [1,n]\\ ans=\min \{ dp[i]_{below\ or \ above} +|a[i].y_{below\ or\ above}| \} + X_t\\ \]

这个查找边的话只需要 set 暴力跳就好了,时间不管怎么样都可以卡过去,毕竟我们的 erase 操作保证了不会爆炸到 \(\mathcal {O(n^2)}\)

#include<bits/stdc++.h>
using namespace std;
#define int long long 
const int N=5e5+10;
const int INF=1e16;
int n,ed;
set<pair<int,int>>s;
struct node{int xl,xr,yl,yr;
}a[N];bool cmp(node a,node b){return a.xl<b.xl;
}signed main(){freopen("speike.in","r",stdin);freopen("speike.out","w",stdout);ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);cin>>n>>ed;for(int i=1,xl,xr,yl,yr;i<=n;i++){cin>>xl>>yl>>xr>>yr;if(xl>xr)swap(xl,xr);if(yl>yr)swap(yl,yr);a[i]=node{xl,xr,yl,yr};}sort(a+1,a+1+n,cmp);s.insert({0,0});//set暴力维护 for(int i=1;i<=n;i++){auto it=s.lower_bound({a[i].yl,0});//在前面可以被选取(直接飞过来)的 int VL=INF,VR=INF;#define dp it->second#define h it->firstwhile(it!=s.end() and h<=a[i].yr){//到下边的最小值 VL=min(VL,dp+llabs(h-a[i].yl)/*delta height for below*/);//到上边的最小值 VR=min(VR,dp+llabs(h-a[i].yr)/*delta height for above*/);s.erase(it);it=s.lower_bound({a[i].yl,0});}s.insert({a[i].yl,VL});s.insert({a[i].yr,VR});}
//	cout<<"debug"<<endl;int ans=INF;for(pair<int,int>t:s){int x=t.first;int y=t.second;ans=min(ans,llabs(x)+y);}cout<<ed+ans;
}
http://www.zskr.cn/news/56412.html

相关文章:

  • 质量基石:读懂检查表,用好数字化管理利器
  • 【压测数据分享】VictoriaLogs 中的参数 `inmemoryDataFlushInterval` 对写入性能的影响
  • 2025年电极生产厂家权威推荐榜单:航空插头/马达壳/插针源头厂家精选
  • P9433 [NAPC-#1] Stage5 - Conveyors 分析
  • 技术架构进化论:从“独栋别墅”到“智慧城市”
  • 2025 年最新推荐套袋机厂家权威榜单:聚焦技术创新与专利优势,覆盖多品类设备选型指南M 型袋套袋机/预制袋套袋机/袋中袋套袋机/食品套袋机/八边封套袋机公司推荐
  • UBUNTU22.04,配置wine中调用cuda
  • MySQL 8.0.12 时区设置和修改
  • 记录双系统笔记本系统损坏恢复步骤
  • 中电金信与中国金融科技的共振之路
  • 题解:NFLSOI#31351. 小吃
  • xilinx在线升级+flash操作+N25Q128
  • Day23、24:2025年10月13日、14日,星期一、二,休息。
  • gdb安装 linux
  • 2025 年评价高的四川自助洗车机厂家实力及用户口碑排行榜
  • Day18:2025年10月8日,星期三,值班,平安顺遂。
  • 【Springer|EI、SCOPUS双检索】第三届人工智能安全与隐私国际学术会议(AISP 2025)
  • C++ 中打开记录的多种方式及相关流类
  • 小泉刀拍蒜断刀事件分析:老字号的危机与出路‌
  • OceanBase Session ID 之谜
  • 2025 最新装修公司品牌推荐排行榜:高端环保 / 收纳设计 / 别墅大平层专属口碑企业精选苏州装修 / 全屋定制 / 环保 / 金属橱柜 / 铝合金橱柜装修公司推荐
  • 2025年管材激光切割机厂家权威推荐榜单:全自动激光切割机/大型激光切割机/光纤激光切割机源头厂家精选
  • 2025年实木家具定制厂家权威推荐榜单:全屋定制板材/环保板材/颗粒板源头厂家精选
  • 2025推荐 有限元仿真/FEA分析第三方外包机构排行榜:蓝图心算科技全链路生态解决方案助力仿真赋能丨流体仿真丨结构仿真丨CFD仿真
  • 2025年校园安检门定制厂家权威推荐榜单:公安局安检门/法院安检门/博物馆安检门源头厂家精选
  • 2025年市场上烤鸭饼机生产厂家排行榜:安徽惠众食品机械制造有限公司领跑行业
  • 2025年烤鸭饼机工厂推荐排行榜:安徽惠众食品机械领跑行业
  • 2025 年 11 月陕西包装盒,礼盒包装盒,西安包装盒厂家最新推荐,聚焦资质、案例、售后的五家机构深度解读!
  • 行业内排行前列的3A信用认证代理哪家专业,3A信用认证/3A信用等级认证/产品测试报告/3A信用认证申请找哪家
  • 2025 年 11 月烘焙食品包装盒,烘焙包装盒订制,月饼盒包装盒厂家最新推荐,聚焦资质、案例、售后的五家机构深度解读!