(强行算法)对2019点美赛D题极端化的算法探讨、设计与遇到的问题(未完,但可能也到此为止)

本文分析了卢浮宫建筑疏散问题,提出基于时序无向图的疏散算法。定义单位时间和单位距离,区分宽道与窄道,并讨论算法思路,包括出口覆盖范围扩大、优先考虑窄道。面临多窄道抉择问题,提出了可能需要动态规划解决的挑战。
摘要由CSDN通过智能技术生成
卢浮宫 某建筑疏散问题 时序无向图?

不考虑残疾人,不考虑工作人员,不考虑一切麻烦事。只考虑一群正常人走出建筑,怎样最快。
核心思路是随着时间的增加不断扩大每个出口的覆盖范围,让出口在覆盖范围内“找人”代表路线的规划

0. 铺垫定义

假设某建筑有好几层,层与层之间有若干通道连接,将这些通道定义为窄道(如楼梯),出口有若干个,可以存在于任意一层,出口与外界之间也存在窄道(如门)(若人是源源不断的,则通过门和通过楼梯所需的平均时间近似相等)

1.定义 单位时间

选一个合适的时间长度当单位时间

2.定义 单位距离

单位时间内人按某个速度匀速行进的距离作为单位距离(eg:走楼梯和走平地在单位时间内走过的距离可能不同,但他们同为单位距离,即只算时间),单位时间内能通过窄道的最大人数称为该出口的最大流量

3.定义 宽道 窄道

把建筑划分成若干个大小基本相等的多边形(或椭圆形)区域称为节点(对应图数据结构中的点)。相邻的点之间存在通道(对应图数据结构中的边)(大厅或长廊中从一个点到另一个点、连接两个点的楼梯都是通道),若一个通道不是窄道,则将其定义为宽道,所有的通道的长度都要求近似符合单位距离
默认窄道人多时会发生拥挤,人流速度受限制,而宽道不会发生拥挤,人流速度为“无限大”(宽道可以拥挤,但其拥挤的原因是窄道限速,所以认为宽道不拥挤)

4.算法思路+定义

找到所有的出口,刚开始它们的时间计数为0。
时间计数决定了出口的覆盖范围。(eg:当时间计数为0时,只有在出口区域一部分人可以逃离建筑;当时间计数为5时,距离任意一个出口五个单位距离的人都可以理论上逃离建筑–无视碰撞体积的情况)

5.算法思路

循环:
{
1.出口的人数 减少 最大流量,但不能低于0
2.时间计数 +1
3.若距离出口附近的人数<出口最大流量:出口点可以在距离自己 时间计数单位距离的范围内找人补充人数至最大流量
注:*递归: * 当出口的覆盖范围中包含窄道时,应优先从窄道另一端的点找人,见考虑1,进行递归。(若窄道另一端覆盖的范围内存在新的窄道,则这一寻找中优先考虑新的窄道)
}
终止条件: 所有的点全部覆盖 所有人都逃出生天

a.考虑1

为什么窄道另一端优先
eg:2层楼疏散,只有一楼有出口,1、2层之间存在若干窄道,出口与外界之间存在若干窄道。姑且把前者称为远级窄道,后者称为近级窄道
显然疏散的最快速度时取决于近级窄道的。若不给远级窄道较高的优先级,而恰好所有的远级窄道的最大流量和<所有近级窄道的最大流量和,就很可能会出现1楼的人已经疏散完,留下大量的出口,而2楼的人无法及时下来的情况。

这只是一种找到每个通道需要走多少人的办法。当走一条通道的总人数固定,哪里的人先走对时间几乎没有影响。

A.问题1

同时涵盖到多条窄道时,如何抉择?(好像遇到坑了,怎么感觉需要花式DP啊)

代码(数组模拟数据结构)(未完成)
#include <iostream>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值