Emiya 家今天的饭

看这篇题解

能学到挺多东西的。

首先是容斥原理,我们看到了序列题不超过一半,可以往这上面想,因为一定不会有两种元素同时超过一半

然后就是DP,我们在这种情况下的DP一般都是预处理,但是这道题目是每次都要枚举不合法的列col进行DP,所以思维不要被限制了

最后是DP的优化。这是我第一次见到通过观察最后的求式来优化DP的。观察最后的和式,我们发现我们只关心j>k的情况,所以可以将维度压缩成一维

或者这篇题解也可以看一看

然后说一个错误的思路,计算不合法方案数的时候,设g[i][j][k]表示前i行第j列占了k行的方案数,然后有g[i][j][k]=g[i1][j][k]+ai,j×g[i1][j][k1]+(sumiai,j)×g[i1][j][k];这样的话是会把合法的方案统计进去的,必须要增加一维描述其他非j列的菜的数量才能比出相对大小

update 2024.8.10

其实这里可以这么想:设第i种菜肴做了xi道菜,于是有i=1mxi=k,要求i[1,m],xik2,这就是典型的容斥原理的形式了

然后那个DP的优化一定要记住,我们要么从状态上优化,要么从转移过程优化,要么利用等效状态,这里就从状态上优化,只不过是通过观察求式来优化状态的

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