P4067 [SDOI2016] 储能表 题解
题目详情 - [SDOI2016] 储能表 - BZOJ by HydroOJ
-
一道很好的数位 dp 题
-
不过这题有一个比较有意思的性质:当
为 的形式时,最终得到的数组对每一行排序后为 的排列,如果有的话说不定可以作为一个部分分? -
遇到二进制运算,通常不是按位考虑就是数位 dp 。这题按位考虑不现实,因为
的约束条件比较严格,我们不能通过单纯的判断数位的某一位来知道这个数是否 ,因此我们考虑数位 dp -
最终答案是什么?记 异或值
的对数 和 异或值 的异或和 ,则最终答案为-
设计状态:
表示考虑到第 位, 的上界有没有取到、 的上界有没有取到、 的下界有没有取到的最终答案。再设一个辅助转移数组 定义相同,但记录的是对数。 -
初始化:
-
转移:记下一维的状态为
,第 位填的数为 , 的第 维为 -
-
最终答案:
,因为下标是从 开始,所以前两项不用取到。因为异或和为 的会被减掉,因此不用考虑 的情况,第三项不用取到
-
-
最终复杂度
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?