最短路径(状压dp)(ybtoj)

在这里插入图片描述

解析

“bug总有de完的一天”

头疼
暴力写的话本题显然复杂度是假的
有一个很好的思路优化时间复杂度
先用dp[k][i]表示**从第k个关键点到任意i点的最短路
跑k遍 SPFA或迪杰斯特拉 即可
然后转移时可以只考虑关键点
使状态转移数大大降低

细节

头真疼

边界条件:

if((st^1<<(id[pl]-1))==0){
		return f[id[s]][pl];
	}

从这里也可以看出也需要预处理一下s的最短路
那就加在后面也求一下即可

bug

!!!
1.有向图!!!(惯性思维了)
2.这个距离不是对称的!!!
3.本题每条边不一定只跑一遍,所以要开longlong,而且最大值也要大一些
(具体最差是多少我也没证明白。。)
4.k=0时相当于最短路问题,要特判!
5.dp角标是点作为关键点的编号而不是本身编号(RE预警)

教训

1.审题!!
2.对边界条件的谨慎处理
3.代码能力太差了qwq

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值