info: { blogIcon: 'https://cdn.luogu.com.cn/upload/usericon/765493.png', blogUser: 'OIerBoy', blogAvatar: 'https://cdn.luogu.com.cn/upload/usericon/765493.png', blogStartDate: '2023-04-22', webpageTitleOnblur: '(o?v?)ノ Hi', webpageTitleOnblurTimeOut: 1000, webpageTitleFocus: '(*′?`*) 欢迎回来!', webpageTitleFocusTimeOut: 1000, webpageIcon: "https://cdn.jsdelivr.net/gh/BNDong/Cnblogs-Theme-SimpleMemory@master/img/webp/blog_logo.webp", { enable: true, // 是否开启日/夜间模式切换按钮 auto: { // 自动切换相关配置 enable: false, // 开启自动切换 dayHour: 5, // 日间模式开始时间,整数型,24小时制 nightHour: 19 // 夜间模式开始时间,整数型,24小时制 } } },

[ABC212E] Safety Journey

2023-01-08

题目

题目传送门

翻译

翻译

难度&重要性(1~10):2

题目来源

AtCoder

题目算法

dp

解题思路

首先就想到暴力 dp,用三个循环枚举:\(1.\) 时间,\(2.\) 目前在的城市,\(3.\) 明天去的城市。 时间复杂度为 \(O(n^2k)\),由于 \(1 \le n,m,k \le 5000\),所以会超时。
后来想到边表可以优化边,于是就用边表记录不能走的,\(f_{i,j}\) 就是加上之前所有的方案数 \(f_{i-1,j}\) 再减去不能走的(包括自己)。虽然看上去没什么区别,但是因为只有 \(M\) 条边,所以只用算 \(2M\) 次(因为是双向的)。最终的时间复杂度为 \(O(nm+nk)\)

完成状态

已完成

posted @ 2023-04-24 19:29  OIerBoy  阅读(38)  评论(0)    收藏  举报