Distance to Different

最开始观察a没看出什么东西来,于是看b,由于统计的是不同的b的数量,所以考虑一个b可以由什么a搞出来,然后就不难发现如果我们将a分段(相同的数放一段),那么对应的b在同一段就会从1开始增加,然后到达一个峰值之后再减小到1(开头和结尾的两段只有减少或增加)

此时我在赛时搞出来一个模型:在b中放若干个1,满足1的个数减去1的段数(连续的1为一段)加上一不小于k,而且每一段至少有两个1;不难知道这是正确的,但是太难计数了

我们最开始以a为观察对象不行,现在换成b了有一点点曙光,但是发现还是太难计数,这个时候就要重新去观察a,就将a分段,于是可以发现,对于a来说,不同的分段对应不同的b(也就是说这是单射),然后就可以DP计数了

但是ba却不是单射。比如a=[1,2,2,3]a=[1,2,3,1]对应的b都相同,但是前者分了三段,后者分了四段,这会导致重复计数

然而,这种情况只有可能在中间发生,于是我们DP计数的时候排除这种特殊情况就好了

posted @   最爱丁珰  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示