2019summer系列 第二场

博客围绕算法题展开,涉及动态规划、暴力求解等方法。包括找出最短路上的边,通过正反求最短路判断边是否在最短路上;介绍了奇怪的灯塔问题解法;还提及D题加强版及最少步数问题用宽搜,用三维数组记录最小步数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

https://vjudge.net/contest/309753#overview

A--------------------------------------

据说是要dp,但是我太暴力了。

B--------------------------------------

据说是个暴力。

C--------------------------------------

找出所有位于最短路上的边。

  1. 把所有边存起来,方便遍历。存邻接矩阵。
  2. 正反,求出1到所有点的最短路和n到所有点的最短路。记1到n的最短路长度为min。
  3. 对于每一条从a到b的边,如果dis1[a]+[a,b]+disn[b,n]==min,就YES,否则就NO。

// 认真预习dij
// 自己瞎写的优先队列优化是错的,暂时不清楚为啥。

D--------------------------------------

以一种奇怪的方法写了出来,据说正解应该枚举灯塔然后拓展,到另一个灯塔或者墙结束。
奇怪的方法:对于每行&&每列取最外边的两个灯塔,中间的非灯塔+2,两侧的+1。

E--------------------------------------

这谁顶得住

F--------------------------------------

D的加强版,似乎可以用我原来的方法的++++++++++++版本。

G--------------------------------------

“最少多少步”,应该考虑宽搜。
使用一个三维数组step[k][i][j]记录到达(i,j)点,剩余k次魔法的最小步数。
while的时候,遇到边界、到达目的地使用魔法次数大于k、步数不是最小,都需要continue。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值