http://acm.hust.edu.cn/vjudge/contest/view.action?cid=105116#problem/C

紫书P276

res[i][j]表示第一个序列移动i个,第二个序列移动j个之后有几个已经出现但尚未结束,dp[i][j]表示第一个序列移动i个,第二个序列移动j个之后的总长度

dp[i][j] = min(dp[i - 1][j],dp[i][j - 1]) + res[i][j]

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <algorithm>
  5. using namespace std;
  6. const int MAX = + ;
  7. const int INF = 0x3f3f3f3f;
  8. char str1[MAX],str2[MAX];
  9. int dp[MAX][MAX],res[MAX][MAX];
  10. int start1[],End1[],start2[],End2[],vis[];
  11. int n,m;
  12. int main()
  13. {
  14. int tase;
  15. scanf("%d", &tase);
  16. while(tase--)
  17. {
  18. scanf("%s%s", str1 + ,str2 + );
  19. n = strlen(str1 + );
  20. m = strlen(str2 + );
  21. memset(vis, , sizeof(vis));
  22. memset(End1, -, sizeof(End1));
  23. memset(End2, -, sizeof(End2));
  24. for(int i = ; i < ; i++)
  25. start1[i] = start2[i] = INF;
  26. for(int i = ; i <= n; i++)
  27. {
  28. if(start1[str1[i] - 'A'] == INF)
  29. start1[str1[i] - 'A'] = i;
  30. End1[str1[i] - 'A'] = i;
  31. }
  32. for(int i = ; i <= m; i++)
  33. {
  34. if(start2[str2[i] - 'A'] == INF)
  35. start2[str2[i] - 'A'] = i ;
  36. End2[str2[i] - 'A'] = i;
  37. }
  38.  
  39. memset(res, , sizeof(res));
  40. for(int i = ; i <= n; i++)
  41. {
  42. for(int j = ; j <= m; j++)
  43. {
  44. int cnt = ;
  45. for(int k = ; k < ; k++)
  46. {
  47. if(start1[k] == INF && start2[k] == INF)
  48. continue;
  49. if(start1[k] > i && start2[k] > j)
  50. continue;
  51. if(End1[k] <= i && End2[k] <= j)
  52. continue;
  53. cnt++;
  54. }
  55. res[i][j] = cnt;
  56. }
  57. }
  58.  
  59. dp[][] = ;
  60. for(int i = ; i <= m ; i++)
  61. dp[][i] = dp[][i - ] + res[][i];
  62. for(int j = ; j <= n; j++)
  63. dp[j][] = dp[j - ][] + res[j][];
  64. for(int i = ; i <= n; i++)
  65. {
  66. for(int j = ; j <= m; j++)
  67. {
  68. dp[i][j] = min(dp[i - ][j], dp[i][j - ]) + res[i][j];
  69. }
  70. }
  71.  
  72. printf("%d\n", dp[n][m]);
  73.  
  74. }
  75.  
  76. return ;
  77. }

TLE

UVA1625Color Lenth(DP+LCS变形 未AC)的更多相关文章

  1. UVA-1625-Color Length(DP LCS变形)

    Color Length(UVA-1625)(DP LCS变形) 题目大意 输入两个长度分别为n,m(<5000)的颜色序列.要求按顺序合成同一个序列,即每次可以把一个序列开头的颜色放到新序列的 ...

  2. poj1080--Human Gene Functions(dp:LCS变形)

    Human Gene Functions Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 17206   Accepted:  ...

  3. HUST 4681 String (DP LCS变形)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4681 题目大意:给定三个字符串A,B,C 求最长的串D,要求(1)D是A的字序列 (2)D是B的子序列 ...

  4. uva 10453 dp/LCS变形

    https://vjudge.net/problem/UVA-10453 给出一个字符串,问最少添加几个字符使其变为回文串,并输出任意一种答案.就是一个类似于LCS的题目,而且简化了一下,只会出现三种 ...

  5. poj 1080 (LCS变形)

    Human Gene Functions 题意: LCS: 设dp[i][j]为前i,j的最长公共序列长度: dp[i][j] = dp[i-1][j-1]+1;(a[i] == b[j]) dp[i ...

  6. POJ 1080( LCS变形)

    题目链接: http://poj.org/problem?id=1080 Human Gene Functions Time Limit: 1000MS   Memory Limit: 10000K ...

  7. 九度OJ 1016 火星A + B 未AC版,整型存储不下

    #include <iostream> #include <string.h> #include <sstream> #include <math.h> ...

  8. UVA.10192 Vacation (DP LCS)

    UVA.10192 Vacation (DP LCS) 题意分析 某人要指定旅游路线,父母分别给出了一系列城市的旅游顺序,求满足父母建议的最大的城市数量是多少. 对于父母的建议分别作为2个子串,对其做 ...

  9. UVA.10066 The Twin Towers (DP LCS)

    UVA.10066 The Twin Towers (DP LCS) 题意分析 有2座塔,分别由不同长度的石块组成.现在要求移走一些石块,使得这2座塔的高度相同,求高度最大是多少. 问题的实质可以转化 ...

随机推荐

  1. Spark中Lambda表达式的变量作用域

    通常,我们希望能够在lambda表达式的闭合方法或类中访问其他的变量,例如: package java8test; public class T1 { public static void main( ...

  2. Linux Standards Base LSB

    LSB简介 http://www.ibm.com/developerworks/cn/linux/l-lsb-intr/ http://refspecs.linuxbase.org/ http://t ...

  3. scrollToItemAtIndexPath: atScrollPosition: animated:

    oh my god 今天死在scrollToItemAtIndexPath: atScrollPosition: animated:方法上面,scrollPosition这个参数控制cell具体停留在 ...

  4. [Android]Dagger2Metrics - 测量DI图表初始化的性能(翻译)

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5098943.html Dagger2Metrics - 测量D ...

  5. js与native交互

    js与native交互 UIWebView Native调用JS,使用stringByEvaluatingJavaScriptFromString来解释执行js脚本. //script即为要执行的js ...

  6. Android 手机卫士--参照文档编写选择器

    本文来实现<Android 手机卫士--导航界面1的布局编写>中的图片选择器部分的代码. 本文地址:http://www.cnblogs.com/wuyudong/p/5944356.ht ...

  7. Android编码规范05

    编码逻辑规范总结: 1.避免使用多个类放在一个文件里,除非是一次性使用的内部类 2.一个方法代码长度最好不要超过35行 3.原则上尽量不要修改自动生成的文件,如R文件 4.Final String 取 ...

  8. linux php编译安装

    1.下载php安装包 http://cn2.php.net/get/php-5.5.36.tar.gz/from/this/mirror 默认情况下Nginx和PHP他俩之间是一点感觉没有的.Apac ...

  9. Web.xml配置详解

    (转自:http://www.cnblogs.com/chinafine/archive/2010/09/02/1815980.html) 1 定义头和根元素 部署描述符文件就像所有XML文件一样,必 ...

  10. Swift和Objective-C混编注意事项

    前言 Swift已推出数年,与Objective-C相比Swift的语言机制及使用简易程度上更接地气,大大降低了iOS入门门槛.当然这对新入行的童鞋没来讲,的确算是福音,但对于整个iOS编程从业者来讲 ...