题面在[这里][1] description 输入两个长度分别为$n$和$m$的颜色序列,要求按顺序合并成同一个序列,即每次可以把一个序列开头的颜色放到新序列的尾部。 对于每个颜色$c$来说,其跨度$L(c)$等于最大位置和最小位置之差。 你的任务是找一种合并方式,使得所有$L(c)$的总和最小。 ...
分类:
其他好文 时间:
2018-05-19 18:37:36
阅读次数:
147
动态规划类型总结 1.最长上升子序列,最大连续子序列和最长公共子序列(zxh,415--430,556--560,587--591,uva 11400,uva 11584,uva1625) 2.背包问题(uva 12563,金明的预算方案) 3.区间DP(zxh,488--502,算法导论相应题目) ...
分类:
其他好文 时间:
2018-02-24 13:09:55
阅读次数:
157
学习dp时在紫书发现的一个奇妙的题... dp(i,j)并不能表示任意的长为i, j的两个串的L(c), 只有dp(lena, lenb)有意义... 因为任意ij后面的字符会影响开始/结束位置的数组... #include<cstdio> #include<cstring> #include<al ...
分类:
其他好文 时间:
2018-02-03 00:42:26
阅读次数:
148
这是刘汝佳《算法竞赛入门经典第二版》的一道例题,只看书上的解释并没有理解,随后结合着代码才理解了。
解题思路:用d[i][j]表示序列1移走i个元素和序列2移走j个元素的最小“代价”, 这个代价指的是由那些已经移出的字母合并而来的序列中已经出现但尚未结束的字母对总距离和的贡献。比如说一个合并而来的序列中有两个那样的字母,第一个在这个序列中后面有3个字母,另一个字母后面有2个字母,那么此时的代价就...
分类:
其他好文 时间:
2015-07-31 20:29:00
阅读次数:
1978
// uva1625 Color Length
// 这是好久之前在紫书(page 276)上看到的题目了
// 题目的意思是,给你两个长度分别为n和m的颜色序列(n,m<=5000)
// 都是由大写字母组成,要求按照顺序合并成同一个序列,即每次
// 可以把一个序列开头的颜色放在新序列的尾部
// 比如两个序列:GGBY 和 YRRGB至少有两种合并结果:
// GBYBRYRGB 和 YRR...
分类:
其他好文 时间:
2015-04-27 11:16:47
阅读次数:
93
简单DP,dp[i][j]表示从第一个序列里取出i个和从第j个序列里取出j个的组合的最小值,可以从两个方向转移过来,每次转移加上已经出现过的且还没有出现完的字母的个数. O(n?m)O(n*m)的复杂度.
1625 Color LengthCars painted in different colors are moving in a row on the road as shown in Figu...
分类:
其他好文 时间:
2015-02-11 16:39:30
阅读次数:
194