例题 9-8 颜色的长度(Color Length, ACM/ICPC Daejeon 2011, UVa1625)
原题链接: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)相关推荐
- UVA 1625—Color Length(ACM/ACPC Daejeon 2011)
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- 颜色拾取器color picker (javascript version)
颜色拾取器 216种web safe color的构造方法 var cl = ['00','33','66','99','CC','FF']; var clist = []; for( ...
- 《Real-Time Rendering 4th Edition》读书笔记--简单粗糙翻译 第八章 光和颜色 Light And Color
写在前面的话:因为英语不好,所以看得慢,所以还不如索性按自己的理解简单粗糙翻译一遍,就当是自己的读书笔记了.不对之处甚多,以后理解深刻了,英语好了再回来修改.相信花在本书上的时间和精力是值得的. -- ...
- R语言plotly包可视化线图(line plot)、使用restyle参数自定义设置可视化结果中线条的颜色、使用按钮动态切换线条的颜色(change line color with button)
R语言plotly包可视化线图(line plot).使用restyle参数自定义设置可视化结果中线条的颜色.使用按钮动态切换线条的颜色(change line color with button i ...
- 1.4 获取字符串长度(length())
在 Java 中,要获取字符串的长度,可以使用 String 类的 length() 方法,其语法形式如下: 字符串名.length(); 例 1 在学生信息管理系统中对管理员密码有这样的规定,即密码 ...
- c++获取数组长度_灵魂拷问:Java如何获取数组和字符串的长度?length还是length()?...
限时 1 秒钟给出答案,来来来,听我口令:"Java 如何获取数组和字符串的长度?length 还是 length()?" 在逛 programcreek 的时候,我发现了上面这个 ...
- GPU Gems1 - 22 颜色控制(Color Controls)
这章将在游戏中图像处理的讨论,扩展到技术和艺术上控制颜色的方法和应用,包括将图像从一些的色彩空间中移入移出,以及快速地给任何2D或3D场景加上精美的色调. 色彩校正(Color Correction) ...
- linux less 带颜色,less中color函数字体颜色计算
LESS 提供了一系列的颜色运算函数. 颜色会先被转化成 HSL 色彩空间, 然后在通道级别操作: lighten(@color, 10%); // return a color which is 1 ...
- c++课后题,声明一个长方体类Box,该类有长度(length),宽度(width),高度(height)三个数据成员,类中有获取及修改长度…………
c++课后题,声明一个长方体类Box,该类有长度(length),宽度(width),高度(height)三个数据成员, 类中有获取及修改长度,宽度,高度的函数,还有计算长方体表面积和体积的函数.请按 ...
最新文章
- rhel6多台主机的HA集群,并实现增加仲裁盘和共享存储
- VMware VCenter模板不显示问题
- reactjs css modules解决组件间样式覆盖问题
- matlab 自动扫雷,MATLAB自动扫雷(2)——排雷插旗
- 08函数的参数 进阶
- python 3.9 发布计划_Python 3.9.0 beta4 发布
- eas软标签_商品防盗尤为重视,防盗软标签突显本质优势
- Delphi TreeView失去焦点也选中
- Windows7下安装redmine-3.4.6
- [zt] HTTP 协议及其POST与GET操作差异 C#中如何使用POST、GET等
- web前端设计师需要常去的15个设计博客资源站
- Python正则表达式一文详解+实例代码展示
- 设计模式之禅【适配器模式】
- linux ldap客户端工具,openldap(3)linux客户端 启用ldap、sssd 认证
- pandas数据类型转为str
- centos7升级Apache2.4.6到2.4.54
- 设置计算机电源线,小技巧get 主机内凌乱线材如何轻松搞定
- linux查看电脑硬件信息,怎么在linux下查看电脑硬件设备属性和各种信息
- android设备什么手机号码,安卓手机如何查看本机号码 查看本机号码的方法有哪些...
- vue生命周期钩子函数有哪些