solution : 就按题解敲了一遍,好久没写这种dp

  1.  1 #include <cstdio>
  2.  2 #include <cstring>
  3.  3 #include <string>
  4.  4 #include <vector>
  5.  5 #include <algorithm>
  6.  6 #include <iostream>
  7.  7 using namespace std;
  8.  8 typedef long long LL;
  9.  9 const int MAX = 1e3+;
  10.  const int MOD = 1e9+;
  11.  int dp[MAX][MAX];
  12.  LL f[MAX][MAX];
  13.  int Next[];
  14.  char a[MAX],b[MAX];
  15.  int main() {
  16.      int cas;
  17.      scanf("%d",&cas);
  18.      while(cas--) {
  19.          scanf("%s %s",a+,b+);
  20.          memset(dp,,sizeof(dp));
  21.          int n=strlen(a+);
  22.          int m=strlen(b+);
  23.          for(int i=;i<=n;i++) {
  24.              for(int j=;j<=m;j++) {
  25.                  if(a[i]==b[j]) {
  26.                      dp[i][j]=max(dp[i][j],dp[i-][j-]+);
  27.                  }
  28.                  else {
  29.                      dp[i][j]=max(dp[i][j-],dp[i-][j]);
  30.                  }
  31.              }
  32.          }
  33.          memset(f,,sizeof(f));
  34.          for(int i=;i<=n;i++) {
  35.              memset(Next,,sizeof(Next));
  36.              for(int j=;j<=m;j++) {
  37.                  if(dp[i][j]==) {
  38.                      f[i][j]=;
  39.                  }
  40.                  else {
  41.                      Next[b[j]-'a']=j;
  42.                      if(dp[i-][j]==dp[i][j]) {
  43.                          f[i][j]=(f[i][j]+f[i-][j])%MOD;
  44.                      }
  45.                      if(Next[a[i]-'a']) {
  46.                          int p=Next[a[i]-'a'];
  47.                          if(p&&dp[i-][p-]+==dp[i][j]) {
  48.                              f[i][j]=(f[i][j]+f[i-][p-])%MOD;
  49.                          }
  50.                      }
  51.                  }
  52.              }
  53.          }
  54.          cout<<f[n][m]<<endl;
  55.      }

56 }

BestCoder Round #47 1003的更多相关文章

  1. 从lca到树链剖分 bestcoder round#45 1003

    bestcoder round#45 1003 题,给定两个点,要我们求这两个点的树上路径所经过的点的权值是否出现过奇数次.如果是一般人,那么就是用lca求树上路径,然后判断是否出现过奇数次(用异或) ...

  2. HDU 5682/BestCoder Round #83 1003 zxa and leaf 二分+树

    zxa and leaf Problem Description zxa have an unrooted tree with n nodes, including (n−1) undirected ...

  3. BestCoder Round #29 1003 (hdu 5172) GTY's gay friends [线段树 判不同 预处理 好题]

    传送门 GTY's gay friends Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Ot ...

  4. Bestcoder Round 47 && 48

    1.Senior's Array(hdu 5280) 题目大意:给出大小为N的数组和P,求将数组中的某个元素替换为P后的最大连续子段和.N<=1000 题解: 1.送分题,比赛的时候只想到枚举替 ...

  5. BestCoder Round #87 1003 LCIS[序列DP]

    LCIS  Accepts: 109  Submissions: 775  Time Limit: 4000/2000 MS (Java/Others)  Memory Limit: 65536/65 ...

  6. BestCoder Round #75 1003 - King's Order

    国王演讲后士气大增,但此时战争还没有结束,国王时不时要下发命令. 由于国王的口吃并没有治愈,所以传令中可能出现:“让第三军-军-军,到前线去” 这样的命令.由于大洋国在军队中安插了间谍 , 战事紧急, ...

  7. BestCoder Round #47

    1001 Senior's Array 题目链接:1001 题意:给你一个长度为n的序列,你必须修改序列中的某个数为P,求修改后的最大连续子序列和. 思路:数据量比较小,可以直接暴力做, 枚举序列的每 ...

  8. BestCoder Round#11div2 1003

    ----- 有时候如果枚举起点超时,那么试试枚举终点. 枚举每一个i为终点(0<= i < n),且维护起点下标startPos 对于终点i,cnt[str[i]] ++,   如果小于等 ...

  9. BestCoder Round#8 1003

    dp[i][j] 表示以i结尾的长度为j的递增子序列dp[i][j] = sum(dp[k][j])     k<i && a[i] >a[j]如果只是单纯的循环for(j ...

随机推荐

  1. cmd命令下执行jar包程序

     在cmd中使用指令来执行jar包 概述: 今天有一个需求,要在cmd中执行.jar文件 实践: 1.新建你的Hello world 2.导出到jar包 3.打开你的成功导出的jar包 4.打开文件夹 ...

  2. Python读取文件行数不对

    对于一个大文件,读取每一个行然后处理,用readline()方法老是读不全,会读到一半就结束,也不报错: 总之处理的行数跟 wc -l 统计的不一样,调试了一下午,改用 with open('xxx. ...

  3. .net 音频转换 .amr 转 .mp3 (七牛转换法)

    .amr 用于移动设备的音频,压缩比比较大,多用于人声.通话,效果还行!所以,移动设备多采用amr格式来进行录存!比较常见的例子:通话录音,微信语音以及录音等! 这个鬼,用两个字来形容,就是“蛋疼”: ...

  4. checkbox:click事件触发span元素内容改变

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. 手把手教写devops全栈自动化工具(django2.1)

    简单介绍一下自己之前写的一个全栈项目,框架用的是django2.1版本 主要对paramiko模块,salstack的API二次开发. 核心组件包括:MQ,mysql,websocket,redis, ...

  6. Synplify FPGA 逻辑综合

    作为 Synopsys FPGA 设计解决方案的一部分,Synplify FPGA 综合软件是实现高性能.高性价比的 FPGA 设计的行业标准. 其独特的行为提取综合技术 (Behavior Extr ...

  7. 微信小程序开发系列二:微信小程序的视图设计

    大家如果跟着我第一篇文章 微信小程序开发系列一:微信小程序的申请和开发环境的搭建 一起动手,那么微信小程序的开发环境一定搭好了.效果就是能把该小程序的体验版以二维码的方式发送给其他朋友使用. 这个系列 ...

  8. postman做压力测试

    压力测试 当你需要验证你的接口的抗压能力的时候,可以点击Runner,进行压力测试 注意:压力测试只能以文件夹的方式执行多个接口,不能单独执行,如果想要测试某一个接口,就创一个文件夹,这个文件夹里只有 ...

  9. Qt setWindow setViewPort

    painter.setWindow(-50, -50, 100, 100); //表示x,y坐标不变,可视的窗口移动到(-50,-50)的位置.同时在x,y方向产生factorx= (window.w ...

  10. C++ 类中的static成员的初始化和特点

    C++ 类中的static成员的初始化和特点 #include <iostream> using namespace std; class Test { public: Test() : ...