dp[i][j]表示前一个序列拿了i个颜色,后一个序列拿了j个颜色的最小花费。

转移的时候显然只能向dp[i+1][j],或dp[i][j+1]转移,每增加拿走一个颜色,之前已经出现但没结束的颜色个数的跨度都增加1,为了在转移的时候快速算出这个值,先预处理出每个颜色在各个序列中的起始和终止位置。

memset (dp),然后就GG了

#include<bits/stdc++.h>
using namespace std; #define FOR(i,s,e) for(int i = s; i < e; i++)
#define RFOR(i,e,s) for(int i = e-1; i >= s; i--)
#define bug(x) cout<<#x<<'='<<endl #define MP make_pair
#define PB push_back
#define fi first
#define se second #define CLR(x) memset(x,0,sizeof(x));
#define CLRTo(x,v) memset(x,v,sizeof(x)); const int maxn = ; int dp[maxn][maxn]; const int N = ;
char s1[maxn];
char s2[maxn];
bool vis[N];
int ed2[N],ed1[N];
int st1[N],st2[N]; #define GetEd(x)\
CLR(vis);\
for(i = n##x-; i >= ; i--){\
int id = s##x[i] - 'A';\
if(!vis[id]){\
vis[id] = true;\
ed##x[id] = i;\
}\
} #define GetSt(x)\
CLR(vis);\
for(i = ; s##x[i]; i++){\
int id = s##x[i] - 'A';\
if(!vis[id]){\
vis[id] = true;\
st##x[id] = i;\
}\
}\
n##x = i; int cal(int i,int j)
{
int ret = ;
for(int k = ; k < N; k++){
bool f1 = j>=st2[k] || i>=st1[k];
bool f2 = j<ed2[k] || i < ed1[k];
ret += f1&&f2;
}
return ret;
} const int INF = 0x3fffffff; int main()
{
//freopen("in.txt","r",stdin);
int T; scanf("%d",&T);
while(T--){
scanf("%s%s",s1,s2);
int i;
int n1 ,n2 ;
fill(st1,st1+N,INF);
fill(st2,st2+N,INF);
fill(ed1,ed1+N,-INF);
fill(ed2,ed2+N,-INF);
GetSt() GetSt()
GetEd() GetEd()
for(i = ; i <= n1; i++){
for(int j = ; j <= n2; j++){
if(i&&j){
dp[i][j] = min(dp[i-][j],dp[i][j-])+cal(i-,j-);
}else {
if(i){
dp[i][j] = dp[i-][j]+cal(i-,j-);
}else if(j){
dp[i][j] = dp[i][j-]+cal(i-,j-);
}else {
dp[i][j] = ;
}
}
}
}
printf("%d\n",dp[n1][n2]);
}
return ;
}

UVA 1625 Color Length 颜色的长度 (预处理+dp)的更多相关文章

  1. UVA - 1625 Color Length[序列DP 代价计算技巧]

    UVA - 1625 Color Length   白书 很明显f[i][j]表示第一个取到i第二个取到j的代价 问题在于代价的计算,并不知道每种颜色的开始和结束   和模拟赛那道环形DP很想,计算这 ...

  2. UVA - 1625 Color Length[序列DP 提前计算代价]

    UVA - 1625 Color Length   白书 很明显f[i][j]表示第一个取到i第二个取到j的代价 问题在于代价的计算,并不知道每种颜色的开始和结束   和模拟赛那道环形DP很想,计算这 ...

  3. UVa 1625 - Color Length(线性DP + 滚动数组)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  4. UVa 1625 Color Length

    思路还算明白,不过要落实到代码上还真敲不出来. 题意: 有两个由大写字母组成的颜色序列,将它们合并成一个序列:每次可以把其中一个序列开头的颜色放到新序列的尾部. 对于每种颜色,其跨度定义为合并后的序列 ...

  5. UVa 1625 Color Length (DP)

    题意:给定两个序列,让你组成一个新的序列,让两个相同字符的位置最大差之和最小.组成方式只能从一个序列前部拿出一个字符放到新序列中. 析:这个题状态表示和转移很容易想到,主要是在处理上面,dp[i][j ...

  6. UVA 1625 "Color Length" (基础DP)

    传送门 •参考资料 [1]:HopeForBetter •题意 •题解(by 紫书) •我的理解 用了一上午的时间,参考紫书+上述博文,终于解决了疑惑: 定义第一个颜色序列用串 s 表示,第二个用串 ...

  7. 1625 - Color Length——[动态规划]

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  8. 动态规划(模型转换):uvaoj 1625 Color Length

    [PDF Link]题目点这里 这道题一眼就是动态规划,然而貌似并不好做. 如果不转换模型,状态是难以处理的. 巧妙地转化:不直接求一种字母头尾距离,而是拆开放到状态中. #include <i ...

  9. Android:认识R类、findViewById方法查找组件、@string查找字符、@color查找颜色、@drawable查找图片、@dimen某个组件尺寸定义、项目引入资源国际化

    导入 之前都是断断续续的看了一些于如何使用android开发的文章.资料等,到目前位置很多基础的东西都不清楚,于是去学习了别人的课程,才了认识了R类.findViewById方法查找组件.项目引入资源 ...

随机推荐

  1. [翻译] 物理引擎javascript实现

    转自: How Physics Engines Work 高中物理全还给老师了啊啊啊啊啊啊 牛顿第二定律 物体加速度的大小跟物体受到的作用力成正比,跟物体的质量成反比,加速度的方向跟合外力的方向相同. ...

  2. 《剑指offer》面试题17—合并两个排序链表

    题目:输入两个递增排顺序的链表,合并这两个链表并使合并后的链表仍是递增排序的. 重点: 1.代码鲁棒性:要判断输入的两个链表都为NULL:其中一个链表为NULL的情况. 2.用递归实现,注意递归的思路 ...

  3. Linux环境下Nginx及负载均衡

    Nginx 简介 Nginx 是一个高性能的 HTTP 和反向代理 Web 服务器,同时也提供了 IMAP/POP3/SMTP 服务.前向代理作为客户端的代理,服务端只知道代理的 IP 地址而不知道客 ...

  4. html5代码如何转成小程序代码

    插件源码 链接:https://pan.baidu.com/s/1pGY8ZsdESaQGEzoEgpb_Rw 提取码:s1ix  放到与pages文件夹同级目录下 js中调用 //引入 var wx ...

  5. POJ1182【种类并查集】

    思路: ---来源百度 0表示它与根结点为同类, 1表示它吃根结点, 2表示它被根结点吃. 判断两个点a, b的关系,我们令p = Find(a), q = Find(b),即p, q分别为a, b子 ...

  6. MyBatis中的RowBounds

    myBatis中实现分页的方式是采用RowBounds这个类,用法如下,xml语句不变 传入两个参数,strat起始行, limit是当前页显示多少条数据,原理是RowBounds在处理分页时,只是简 ...

  7. 【OpenJ_Bailian - 4110】圣诞老人的礼物-Santa Clau’s Gifts (贪心)

    圣诞老人的礼物-Santa Clau’s Gifts  Descriptions: 圣诞节来临了,在城市A中圣诞老人准备分发糖果,现在有多箱不同的糖果,每箱糖果有自己的价值和重量,每箱糖果都可以拆分成 ...

  8. Python-4-设置字符串的格式字符串

    字符串是不可变的,所有元素赋值和切片赋值都是非法的   1.替换字段名 可以按顺序和名称匹配 >>> "{foo} {} {bar} {}".format(1, ...

  9. 关于maven+springmvc+mybits搭建的框架clean,build后错误:org.apache.ibatis.binding.BindingException的处理

    1.错误原型截图: 2.我对错误的处理轨迹: a.首先,可能是我的mapper.xml配置错了,但是经过查看发现mybits.xml配置如下: 我项目的目录结构如下: 初次判断mybits的配置没有问 ...

  10. Tinghua Data Mining 5

    ID3 ID3算法倾向于分的很细的变量 C4.5加入分母为惩罚量