[Edu 174 D] Palindrome Shuffle
前言
理一下我最近的问题
- 剪枝不果断, 效果不好
- 听讲老是听不懂
最近就大概跟着做就行了
- 定义操作 (约束) 和开销 / 收益, 要求最值化开销 / 收益
- 推式子计算约束条件
- 模拟操作情况, 找到最好开销, 注意最大和最小, 一般来说可以贪贪心 (将简单情况先处理, 然后在基础上处理最值)
- 考虑操作对答案的影响 (推式子) , 据此对操作进行排序
 
思路
题意
给定一个字符串, 任意排列字符串中的一个子串, 使得得到的字符串是回文串, 求出最小的子串长度
不难发现对于相同的前后缀, 我们可以先行去掉不影响答案
对于中间的一部分, 如何选择子串才能最小化长度不影响转化成回文串?
- 
一种特殊情况 ab | ab cba | cba这种情况下\((\)即左右部分字符集相等\()\)调整一半的一部分就可以做到对称 
- 
其他情况 
 这种情况下需要同时覆盖左右部分
 问题是怎么选择子串长度最小- 如果从左往右选
 左边的一个部分包含的字母都要求完全匹配到右边, 也就是说对于每一个字符, 左边的出现次数大于右边的出现次数, 就行
- 如果从右往左选
 右边的一个部分包含的字母都要求完全匹配到左边, 也就是说对于每一个字符, 右边的出现次数大于左边的出现次数, 就行
 
- 如果从左往右选
总结
唐诗贪心, 不太好说
跟着样例模拟就行了

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号