题解:

首先区间dp是比较好想到的

然后我感觉接下来就是乱搞。。。

我们会发现接下来的操作 无非就是 用一种颜色去覆盖这整个区间 然后在做

于是我用了比较暴力的做法,f[i][j][k]表示i-j这段区间被k颜色完全覆盖

那么转移就是枚举f[i][kk][k] f[kk+1][j][k]

另外要注意还有同层之间可以用全部覆盖成一个颜色来转移

最后再跑一遍dp(这时候已知了g[i][j] (覆盖i-j的最小值))

代码:

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define rint register int
  4. #define IL inline
  5. #define rep(i,h,t) for (rint i=h;i<=t;i++)
  6. #define dep(i,t,h) for (rint i=t;i>=h;i--)
  7. char s1[],s2[];
  8. int f[][][],g[][],p[];
  9. const int INF=1e9;
  10. int main()
  11. {
  12. freopen("1.in","r",stdin);
  13. freopen("1.out","w",stdout);
  14. ios::sync_with_stdio(false);
  15. while( cin>>s1>>s2)
  16. {
  17. int n=strlen(s1);
  18. dep(i,n,) s1[i]=s1[i-],s2[i]=s2[i-];
  19. rep(i,,n)
  20. rep(j,i+,n) g[i][j]=INF;
  21. rep(i,,n)
  22. {
  23. rep(k,,) f[i][i][k]=;
  24. f[i][i][s2[i]-'a']=;
  25. if (s1[i]==s2[i]) g[i][i]=; else g[i][i]=;
  26. }
  27. rep(i,,n)
  28. rep(j,,n-i+)
  29. {
  30. int h=j,t=j+i-;
  31. rep(k,,)
  32. {
  33. f[h][t][k]=INF;
  34. rep(k1,h,t-)
  35. {
  36. f[h][t][k]=min(f[h][t][k],f[h][k1][k]+f[k1+][t][k]-);
  37. }
  38. g[h][t]=min(g[h][t],f[h][t][k]);
  39. }
  40. rep(k,,) f[h][t][k]=min(f[h][t][k],g[h][t]+);
  41. }
  42. rep(i,,n)
  43. {
  44. p[i]=INF;
  45. rep(j,,i-)
  46. p[i]=min(p[i],p[j]+g[j+][i]);
  47. }
  48. cout<<p[n]<<endl;
  49. }
  50. return ;
  51. }

la4394的更多相关文章

  1. String Painter, Chengdu 2008, LA4394

    题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_ ...

随机推荐

  1. 搭建Unity安卓开发环境

    原文见 https://blog.csdn.net/chenggong2dm/article/details/20654075 tiny教程 https://docs.unity3d.com/Pack ...

  2. in exists

    区别及应用场景 in 和 exists的区别: 如果子查询得出的结果集记录较少,主查询中的表较大且又有索引时应该用in, 反之如果外层的主查询记录较少,子查询中的表大,又有索引时使用exists.其实 ...

  3. Java链接DB2的4种基本类型【转】

    原文链接:http://doc.chinaunix.net/java/201002/776480.shtml 第一种:目前IBM一直都没有提供 TYPE 1的JDBC驱动程序. 第二种:类型2驱动:C ...

  4. 浅谈深度优先和广度优先(scrapy-redis)

    首先先谈谈深度优先和广度优先的定义 深度优先搜索算法(英语:Depth-First-Search,DFS)是一种用于遍历或搜索树或图的算法.沿着树的深度遍历树的节点,尽可能深的搜索树的分支.当节点v的 ...

  5. JS 手机端多张图片上传

    代码如下 <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="u ...

  6. python-并发编程之多进程

    一.操作系统基础: 进程的概念起源于操作系统,操作系统其它所有概念都是围绕进程来的,所以我们了解进程之前先来了解一下操作系统 操作系统位于计算机硬件与应用软件之间,本质也是一个软件.操作系统由操作系统 ...

  7. python之hashlib

    简介: 用于加密相关的操作,代替了md5模块和sha模块,主要提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法.在python3中已经废弃了md5和sha模块,简单说明 ...

  8. WebSocketTest 异步通讯,实时返回数据

    using System;using System.Net;using System.Net.Sockets;using System.Text;using System.Threading;usin ...

  9. ssh: connect to host github.com port 22: Connection timed out

    问题描述 $ git clone git@github.com:MaugerWu/MaugerWu.github.io.git Cloning into 'MaugerWu.github.io'... ...

  10. GitHub访问慢

    问题描述 一直都觉得访问 GitHub 时速度非常慢,刷新一下都要等好久!于是尝试一下能否解决掉... github.com assets-cdn.github.com avatar2.githubu ...