题解 CF1286A 【Garland】
updata on 2020.3.19 往博客园搬的时候看了看自己以前写的blog 其实没多久,才两个多月,感觉自己之前写的东西好罗嗦啊。。 但也是最近写的blog才开始多起来 当然现在也没好到哪去。。。 CF1286A题解 整理博客的时候改了一下分类标签,重新审核一下 dp 觉得这题作为一个C比div2的B要简单点吧, 算是找回点dp的信心。。。 首先可以想到,只需关心每个数的奇偶,具体是几不用记录 所以 \(0\) 表示偶数, \(1\) 表示奇数, \(-1\) 表示不确定,存在 \(a[]\) 中 \(num[0/1]\) 表示一共有几个偶/奇数需要填 状态: \(f[i][o][j][0/1]\) : 考虑前 \(i\) 位,还剩 \(o\) 个偶数能用,剩 \(j\) 个奇数能用,第 \(i\) 位填的是偶数/奇数 初始: 先都设为极大值 第一位填好了: \(f[1][num[0]][num[1]][a[1]]=0\) 第一位需要自己填: \(f[1][num[0]-1][num[1]][0]=f[1][num[0]][num[1]-1][1]=0\) ,要判断 \(num[0]\) 和 \(num[1]\) 是否大于0 转移: \(i\) 位填好了: 直接判断与前一位是否相等,不相等就加一 \(f[i][o][j][a[i]]=\min(f[i][o][j][a[i]