原题链接:https://vjudge.net/problem/UVA-1625
分类:LCS型
备注:类似于LCS,指标函数的分解

hav[i][j]应该表示在串A取完i个字符和串B取完j个字符之后的状态,即有多少种字母已经被取过,但没有用完。之前看紫书的时候,比如GBBY和YRRGB,从(1,3)到(1,4),Y和G要加1,我就理解成了hav[1][4]=2,实际上,从这样(i,j-1)到(i,j)应该加的是hav[i][j-1]。因为,要到状态(i,j),前一个状态可以是(i-1,j)也可以是(i,j-1),要进行动态的变化,就不能加hav[i][j]。

上面内容理解后,很容易有dp[i][j]=min(dp[i-1][j]+hav[i-1][j],dp[i][j-1]+hav[i][j-1])。

#include<bits/stdc++.h>
using namespace std;
const int maxn=5e3+20;
const int inf=0x3f3f3f3f;
char s[2][maxn];
int dp[maxn][maxn],st[2][30],ed[2][30],hav[maxn][maxn];
int t,n,m,len[2];
int main(void){// freopen("in.txt","r",stdin);// freopen("out.txt","w",stdout);scanf("%d",&t);while(t--){scanf("%s%s",s[0]+1,s[1]+1);len[0]=strlen(s[0]+1);len[1]=strlen(s[1]+1);for(int i=1;i<=len[0];i++)s[0][i]-='A';for(int i=1;i<=len[1];i++)s[1][i]-='A';memset(st,inf,sizeof(st));memset(ed,-1,sizeof(ed));for(int i=0;i<2;i++){for(int j=1;j<=len[i];j++){if(st[i][s[i][j]]==inf)st[i][s[i][j]]=j;ed[i][s[i][j]]=j;}}hav[0][0]=0;for(int i=0;i<=len[0];i++)for(int j=0;j<=len[1];j++){if(i){hav[i][j]=hav[i-1][j];if(st[0][s[0][i]]==i&&st[1][s[0][i]]>j)hav[i][j]++;if(ed[0][s[0][i]]==i&&ed[1][s[0][i]]<=j)hav[i][j]--;}if(j){hav[i][j]=hav[i][j-1];if(st[1][s[1][j]]==j&&st[0][s[1][j]]>i)hav[i][j]++;if(ed[1][s[1][j]]==j&&ed[0][s[1][j]]<=i)hav[i][j]--;}}for(int i=0;i<=len[0];i++)for(int j=0;j<=len[1];j++)if (i&&j)dp[i][j]=min(dp[i-1][j]+hav[i-1][j],dp[i][j-1]+hav[i][j-1]);else if(i)dp[i][j]=dp[i-1][j]+hav[i-1][j];else if(j)dp[i][j]=dp[i][j-1]+hav[i][j-1];printf("%d\n",dp[len[0]][len[1]]);}return 0;
}

例题 9-8 颜色的长度(Color Length, ACM/ICPC Daejeon 2011, UVa1625)相关推荐

  1. UVA 1625—Color Length(ACM/ACPC Daejeon 2011)

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

  2. 颜色拾取器color picker (javascript version)

    颜色拾取器 216种web safe color的构造方法 var cl = ['00','33','66','99','CC','FF'];     var clist = [];     for( ...

  3. 《Real-Time Rendering 4th Edition》读书笔记--简单粗糙翻译 第八章 光和颜色 Light And Color

    写在前面的话:因为英语不好,所以看得慢,所以还不如索性按自己的理解简单粗糙翻译一遍,就当是自己的读书笔记了.不对之处甚多,以后理解深刻了,英语好了再回来修改.相信花在本书上的时间和精力是值得的. -- ...

  4. R语言plotly包可视化线图(line plot)、使用restyle参数自定义设置可视化结果中线条的颜色、使用按钮动态切换线条的颜色(change line color with button)

    R语言plotly包可视化线图(line plot).使用restyle参数自定义设置可视化结果中线条的颜色.使用按钮动态切换线条的颜色(change line color with button i ...

  5. 1.4 获取字符串长度(length())

    在 Java 中,要获取字符串的长度,可以使用 String 类的 length() 方法,其语法形式如下: 字符串名.length(); 例 1 在学生信息管理系统中对管理员密码有这样的规定,即密码 ...

  6. c++获取数组长度_灵魂拷问:Java如何获取数组和字符串的长度?length还是length()?...

    限时 1 秒钟给出答案,来来来,听我口令:"Java 如何获取数组和字符串的长度?length 还是 length()?" 在逛 programcreek 的时候,我发现了上面这个 ...

  7. GPU Gems1 - 22 颜色控制(Color Controls)

    这章将在游戏中图像处理的讨论,扩展到技术和艺术上控制颜色的方法和应用,包括将图像从一些的色彩空间中移入移出,以及快速地给任何2D或3D场景加上精美的色调. 色彩校正(Color Correction) ...

  8. linux less 带颜色,less中color函数字体颜色计算

    LESS 提供了一系列的颜色运算函数. 颜色会先被转化成 HSL 色彩空间, 然后在通道级别操作: lighten(@color, 10%); // return a color which is 1 ...

  9. c++课后题,声明一个长方体类Box,该类有长度(length),宽度(width),高度(height)三个数据成员,类中有获取及修改长度…………

    c++课后题,声明一个长方体类Box,该类有长度(length),宽度(width),高度(height)三个数据成员, 类中有获取及修改长度,宽度,高度的函数,还有计算长方体表面积和体积的函数.请按 ...

最新文章

  1. rhel6多台主机的HA集群,并实现增加仲裁盘和共享存储
  2. VMware VCenter模板不显示问题
  3. reactjs css modules解决组件间样式覆盖问题
  4. matlab 自动扫雷,MATLAB自动扫雷(2)——排雷插旗
  5. 08函数的参数 进阶
  6. python 3.9 发布计划_Python 3.9.0 beta4 发布
  7. eas软标签_商品防盗尤为重视,防盗软标签突显本质优势
  8. Delphi TreeView失去焦点也选中
  9. Windows7下安装redmine-3.4.6
  10. [zt] HTTP 协议及其POST与GET操作差异 C#中如何使用POST、GET等
  11. web前端设计师需要常去的15个设计博客资源站
  12. Python正则表达式一文详解+实例代码展示
  13. 设计模式之禅【适配器模式】
  14. linux ldap客户端工具,openldap(3)linux客户端 启用ldap、sssd 认证
  15. pandas数据类型转为str
  16. centos7升级Apache2.4.6到2.4.54
  17. 设置计算机电源线,小技巧get 主机内凌乱线材如何轻松搞定
  18. linux查看电脑硬件信息,怎么在linux下查看电脑硬件设备属性和各种信息
  19. android设备什么手机号码,安卓手机如何查看本机号码 查看本机号码的方法有哪些...
  20. vue生命周期钩子函数有哪些

热门文章

  1. 如何在App中打开设置、appstore或其他App(区别iOS 10及之前系统)
  2. 手把手教你制作智能桌宠(小可爱哦!)
  3. linux安装liinuxrar教程,linux操作系统下RAR的安装和使用
  4. 网页制作HTML代码全攻略
  5. YOLOV5训练数据集过程中特殊问题记录
  6. 针对屏幕显示模糊/清晰度不够的3种调节途径
  7. python画出的图_Python 画出来六维图
  8. 祝大家新春快乐,阖家安康
  9. 三角形面积的勾股定理
  10. BVS未带安全帽人脸识别抓拍系统