题解:洛谷 P2233 [HNOI2002] 公交车路线
本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。欢迎大家订阅我的专栏算法题解C与Python实现附上汇总贴算法竞赛备考冲刺必刷题C | 汇总【题目来源】洛谷P2233 [HNOI2002] 公交车路线【题目描述】在长沙城新建的环城公路上一共有8 88个公交站分别为 A、B、C、D、E、F、G、H。公共汽车只能够在相邻的两个公交站之间运行因此你从某一个公交站到另外一个公交站往往要换几次车例如从公交站 A 到公交站 D你就至少需要换3 33次车。Tiger 的方向感极其糟糕我们知道从公交站 A 到公交 E 只需要换4 44次车就可以到达可是 tiger 却总共换了n nn次车注意 tiger 一旦到达公交站 E他不会愚蠢到再去换车。现在希望你计算一下 tiger 有多少种可能的乘车方案。【输入】仅有一个正整数n nn表示 tiger 从公交车站 A 到公交车站 E 共换了n nn次车。【输出】输出一个正整数表示方案数由于方案数很大请输出方案数除以1000 10001000后的余数。【输入样例】6【输出样例】8【核心思想】问题分析给定8 88个公交站环形排列A~H编号0 00~7 77相邻站之间有直达路线。Tiger 从 A 站编号0 00出发恰好换乘n nn次后到达 E 站编号4 44且一旦到达 E 站就不再换乘。求方案数对1000 10001000取模。这是一个线性 DP问题核心在于状态转移时排除从 E 站出发的路径吸收态。算法选择一维线性 DP滚动数组f [ i ] [ j ] f[i][j]f[i][j]表示换乘i ii次后到达第j jj个站的方案数环形邻接每个站j jj的相邻站为( j − 1 8 ) % 8 (j-18) \% 8(j−18)%8和( j 1 ) % 8 (j1) \% 8(j1)%8A 和 H 也相邻吸收态处理到达 E 站编号4 44后停止因此 E 站不能作为转移来源关键步骤初始化f [ 0 ] [ 0 ] 1 f[0][0] 1f[0][0]1换乘0 00次在 A 站1 11种方案其余为0 00DP 递推i ii从1 11到n nn使用滚动数组c u r i % 2 cur i \% 2curi%2p r e ( i − 1 ) % 2 pre (i-1) \% 2pre(i−1)%2遍历当前站j jj0 00到7 77计算左右邻站l e f t ( j − 1 8 ) % 8 left (j-18) \% 8left(j−18)%8r i g h t ( j 1 ) % 8 right (j1) \% 8right(j1)%8状态转移f [ c u r ] [ j ] ( f [ p r e ] [ l e f t ] ⋅ [ l e f t ≠ 4 ] f [ p r e ] [ r i g h t ] ⋅ [ r i g h t ≠ 4 ] ) m o d 1000 f[cur][j] (f[pre][left] \cdot [left \neq 4] f[pre][right] \cdot [right \neq 4]) \bmod 1000f[cur][j](f[pre][left]⋅[left4]f[pre][right]⋅[right4])mod1000其中[ c o n d i t i o n ] [condition][condition]为指示函数排除从 E 站转移来的路径输出答案f [ n % 2 ] [ 4 ] f[n \% 2][4]f[n%2][4]换乘n nn次后到达 E 站的方案数时间/空间复杂度时间复杂度O ( n × 8 ) O ( n ) O(n \times 8) O(n)O(n×8)O(n)每次换乘枚举8 88个站每个站O ( 1 ) O(1)O(1)转移空间复杂度O ( 8 ) O ( 1 ) O(8) O(1)O(8)O(1)滚动数组仅维护两行线性 DP 的核心思想状态定义清晰f [ i ] [ j ] f[i][j]f[i][j]精确刻画换乘i ii次后在j jj站的方案数满足无后效性吸收态建模E 站作为终点到达后不再离开通过禁止从 E 站向其他站转移实现而非将 E 站方案数清零因为需要统计最终到达 E 站的方案环形结构处理取模运算( j ± 1 8 ) % 8 (j \pm 1 8) \% 8(j±18)%8优雅处理 A-H 的环形邻接滚动数组优化由于f [ i ] f[i]f[i]仅依赖f [ i − 1 ] f[i-1]f[i−1]用两行数组交替使用将空间从O ( n ) O(n)O(n)降至O ( 1 ) O(1)O(1)适用于环形图上的路径计数、带吸收态的随机游走、有限状态转移类问题【算法标签】#普及 #线性DP-一维【代码详解】#includebits/stdc.husingnamespacestd;constintN10000005,mod1000;// N:最大换乘次数上限, mod:取模基数intf[2][8];// 滚动数组f[cur][j]表示换乘i次后到达第j个公交站0A,1B,...,4E,...,7H的方案数intn;// tiger实际换乘的次数intmain(){cinn;// 读入换乘次数f[0][0]1;// 初始状态换乘0次时在A站编号0方案数为1for(inti1;in;i)// 外层循环枚举每次换乘{intcuri%2;// 当前轮次的数组下标滚动数组优化空间intpre(i-1)%2;// 上一轮次的数组下标for(intj0;j8;j)// 内层循环枚举当前所在的公交站0~7对应A~H{// 计算当前站j的左右相邻站环形结构A和H也相邻intleft(j-18)%8,right(j1)%8;intsum0;// 累加到达当前站的方案数// 可以从左邻站到达当前站但不能从E站编号4转移到达E就停止if(left!4)sumf[pre][left];// 可以从右邻站到达当前站同样不能从E站转移if(right!4)sumf[pre][right];f[cur][j]sum%mod;// 对1000取模存储}}// 输出换乘n次后到达E站编号4的方案数coutf[n%2][4]endl;return0;}【运行结果】6 8

相关新闻

本地部署大语言模型实战指南:从环境搭建到API集成

本地部署大语言模型实战指南:从环境搭建到API集成

1. 背景与核心概念 在人工智能技术快速发展的今天,大语言模型(Large Language Model, LLM)已成为推动技术革新的核心引擎。然而,依赖云端API服务不仅涉及数据隐私、网络延迟和持续成本的问题,更限制了开发者对模型进行…

2026/8/13 0:10:09 阅读更多 →
5个技巧打造你的终极任天堂DS游戏启动器:TWiLight Menu++深度解析

5个技巧打造你的终极任天堂DS游戏启动器:TWiLight Menu++深度解析

5个技巧打造你的终极任天堂DS游戏启动器:TWiLight Menu深度解析 【免费下载链接】TWiLightMenu DSi Menu replacement for DS/DSi/3DS/2DS 项目地址: https://gitcode.com/gh_mirrors/tw/TWiLightMenu 你是否曾幻想过将手中的任天堂DS、DSi或3DS设备变成一个…

2026/8/11 21:16:40 阅读更多 →
终极指南:如何使用palera1n工具完成iOS设备越狱

终极指南:如何使用palera1n工具完成iOS设备越狱

终极指南:如何使用palera1n工具完成iOS设备越狱 【免费下载链接】palera1n Jailbreak for A8 through A11, T2 devices, on iOS/iPadOS/tvOS 15.0, bridgeOS 5.0 and higher. 项目地址: https://gitcode.com/GitHub_Trending/pa/palera1n palera1n是一款专业…

2026/8/11 21:16:40 阅读更多 →

最新新闻

2024手机网站建设新闻深度解析:为何移动端体验决定企业生死存亡

2024手机网站建设新闻深度解析:为何移动端体验决定企业生死存亡

在这个手指比脑子转得还快的时代,如果你还在纠结“需不需要做个手机网站”,那我只能遗憾地说,你的商业敏感度可能需要去急诊室挂个号了。别急着反驳,咱们先聊聊现实:早上醒来第一件事是什么?不是看天气,不是回邮件,而是摸到枕边的那块冷冰冰的发光板。我们在这块六英寸…

2026/8/13 0:53:34 阅读更多 →
P9751 [CSP-J 2023] 旅游巴士一题的题解

P9751 [CSP-J 2023] 旅游巴士一题的题解

35分 观察到有六七个点ai0&#xff0c;我们选择直接无视其他点&#xff0c;假装小z进入景区时所有道路都能通行了&#xff0c;那么问题就转换成一个简单的广搜了&#xff0c;用一个队列一层一层的把景点压入&#xff0c;当到了终点时就是最省时间的了。 #include <bits/stdc…

2026/8/13 0:51:33 阅读更多 →
码海拾遗 · Java I/O 学习笔记

码海拾遗 · Java I/O 学习笔记

一、标准输入输出&#xff08;控制台&#xff09;1. 标准输出 System.outSystem.out.print() / println() / printf()最常用的控制台输出。javaSystem.out.println("普通输出"); System.out.printf("格式化输出&#xff1a;%d %d %d%n", 3, 5, 3 5);2. …

2026/8/13 0:48:32 阅读更多 →
西南多省市实体行业电销外包落地实测案例汇总

西南多省市实体行业电销外包落地实测案例汇总

优先呼依托自有B24全网呼叫资质、全国运营商AXB属地线路&#xff0c;搭配180‑天AES加密录音完整留存机制&#xff0c;搭建起远程坐席状态监控、通话溯源、效能数据看板一体化管控工具。从通话行为、在线时长、线索产出三个维度约束居家坐席消极怠工行为&#xff0c;适配全国各…

2026/8/13 0:47:32 阅读更多 →
CTF Web信息搜集:工具技巧与实战指南

CTF Web信息搜集:工具技巧与实战指南

1. BUUCTF Web入门&#xff1a;信息搜集的核心思路在CTF竞赛中&#xff0c;Web安全方向的题目往往从信息搜集开始。就像侦探破案需要先收集线索一样&#xff0c;解题的第一步就是全面了解目标系统的信息。BUUCTF作为国内知名的CTF练习平台&#xff0c;其Web入门题目特别适合新手…

2026/8/13 0:47:32 阅读更多 →
恶意爬虫防护与数字资产安全实战指南

恶意爬虫防护与数字资产安全实战指南

1. 恶意爬虫对数字资产的系统性威胁概述在数字化浪潮席卷全球的今天&#xff0c;恶意爬虫已经从单纯的网络爬取工具演变为对企业数字资产构成系统性威胁的"数字窃贼"。不同于传统爬虫仅用于数据收集&#xff0c;现代恶意爬虫往往具备高度伪装性、分布式攻击能力和自动…

2026/8/13 0:47:32 阅读更多 →

日新闻

Visual Studio新建项目解决方案为空:系统性排查与修复指南

Visual Studio新建项目解决方案为空:系统性排查与修复指南

1. 问题现象与本质剖析如果你是一位.NET开发者&#xff0c;或者正准备踏入这个领域&#xff0c;那么Visual Studio&#xff08;后面简称VS&#xff09;绝对是你绕不开的伙伴。但有时候&#xff0c;这个伙伴会跟你开一个不大不小的玩笑&#xff1a;你满怀期待地点击“创建新项目…

2026/8/13 0:00:09 阅读更多 →
长春建设厅网站:普通人买房办事必看的真实指南与避坑攻略

长春建设厅网站:普通人买房办事必看的真实指南与避坑攻略

说实话,每次提起“长春建设厅网站”这几个字,我心里都挺有感触的。不是因为它有多高大上,也不是因为那里藏着什么不可告人的秘密,恰恰相反,是因为它太“接地气”了,或者说,它是咱们普通人想要在这个城市好好生活、安稳买房时,必须得翻过的一座“数据山”。很多新朋友第…

2026/8/13 0:00:09 阅读更多 →
Windows家庭版远程桌面多用户破解完整指南:RDPWrap终极解决方案

Windows家庭版远程桌面多用户破解完整指南:RDPWrap终极解决方案

Windows家庭版远程桌面多用户破解完整指南&#xff1a;RDPWrap终极解决方案 【免费下载链接】rdpwrap.ini RDPWrap.ini for RDP Wrapper Library by StasM 项目地址: https://gitcode.com/GitHub_Trending/rd/rdpwrap.ini 你是否曾为Windows家庭版无法支持多用户远程桌面…

2026/8/13 0:00:09 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑&#xff1a;baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码&#xff08;维护中 rm repo&#xff09; 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/12 1:11:09 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片&#xff1a;Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/12 1:11:09 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身&#xff0c;而应重视模型外的系统搭建&#xff0c;即Harness。提出AgentModelHarness的实用公式&#xff0c;详细介绍Harness的四个层次&#xff1a;持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/12 1:11:08 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速&#xff1a;macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/11 17:09:45 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南&#xff1a;3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗&#xff1f;ncmdump解密工具帮你轻松解决这个困…

2026/8/12 1:11:10 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片&#xff1a;为英语学习 App 打造桌面级学习助手适用平台&#xff1a;HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0&#xff08;API 26 Beta&#xff09;新增了 AgentCard 智能体卡片能力&#xff0c;这是继 HMAF&#xff08;鸿蒙智能体框架&#x…

2026/8/11 17:09:45 阅读更多 →