SRM589】的更多相关文章

其实这道题挺简单的,不过刚开始我钻了一个错误的死胡同.想明白之后才发现. 题目要求用最少的时间来将一个字符串变成回文字符串.(具体题目参看topcoder srm589 DV1 250分值的题目,不便公开以免影响后面做题的人) 首先对于(i,j),如果i=n-1-j, 那它们所代表的位置的字符最终必须相等,否则就不是回文了.S[i]=S[j]; 如果源字符串S中,S[i]=S[j], 那么在最终的回文字符串中,它们必须还是相等.因为如果S[i]要变成其他字符,那么S[j]也必须跟着变.即它们要不…
250: 给一个串S,可以做这样的操作,可以将串中的一种字母变成另一种字母,代价是该种字母的数量.求解的问题是,最小的代价将串S变成回文串. 根据回文关系,我们可以形成等价对应关系,a与b等价对应说明a和b必须是同种字母,根据这个关系,我们可以得到一个图,每个连通块表示要变成一种相同的字母,而这个操作的最小代价就是将连通块中除出现次数最多的字母全部都转变成出现次数最多的字母. #include <iostream> #include <vector> #include <st…