又双叒叕考试了
反思可以更好的总结所以要写反思
目录A. 随
题解:发现模数很特殊,m很大,n好像没什么用,先考虑部分分,暴力枚举,但是m太大了,这种情况要是直接转移肯定不行,必然是根号或者\(log\),然后就想到倍增,暴力合并块
反思:考场上倍增的想法挺好想的的,以前就想过类似的实现但是从来没试过,主要是调了一段时间,花的时间真的太长了,总结就是这道题对我没有很多的收获,想的时候走了很多弯路
B.单
题太长了,考场上没打
很神奇,t=0的时候很容易解决
t=1时可以由t=0时启发得来
嗯,对式子的处理也很神奇,加和然后转化,有收获
C.题
这道题typ=2难一点,认真写
很显然,没办法直接算,因为没人能管你走x还是走y,我们枚举dp[i]表示走了i步回到(0,0)的方案数,他的转移可以从最后一次来回里面计算,设最后一次转移走了j步,很明显,这里的i和j都要在偶数情况下才有意义
为了不去算重,我们需确定最后的j步没有回到原点(否则会被另一种情况覆盖),所以我们的卡特兰数就变成了j/2-1,学明白卡特兰数为什么减一就能保证不回去就可以理解了,懒得写了
而且很妙的是,我们枚举的是两个状态,这两个状态在x轴和y轴上是对称的,也就是这两种状态分别有两种选择,所以更新的时候要乘四
回来思考这个dp的正确性,是因为枚举最后一个来回时保证每个情况只会枚举到一次并且每种情况都能枚举到,普遍话来说就是通过一些简单的行为能够构造出所有的状态,分辨一类状态或者是临时的一个载体的特征以支持所需的操作,这里的范围很广,个人认为,这是对dp状态设置的一个很好的思路,至少T4在我的看法里就是这样的,以前做过的一道完全背包模拟一个队列加点和+1的也是,这些转移看似很神(实则很神)但还是有规律可循的,你想想就会觉得很合理,我觉得这是我学到的最本质的东西
D.DP搬运工1
chuxiaoxiao讲的是我听过的题解里面讲的最友善的,好喜欢好喜欢好喜欢好喜欢好喜欢好喜欢,啊啊啊啊啊啊啊
通过从小到大排序来确定自己所关心的大小关系,通过5个(还是6个)操作构造出所有的序列可能,通过人工让序列左右两端只有数字来节省很多细节和重复的问题,这里分类的标准很明显就是对新加的数有相同的影响
反过头看这几个让我印象深刻的dp,状态就是按照目标和转移目标所需的信息尽可能简化和合并
闲话:为什么四道都要用dp
标签:状态,卡特兰,转移,枚举,喜欢,模拟,CSP,dp From: https://www.cnblogs.com/limingyun/p/17569749.html