借鉴了别人的博客啊,自己写写给以后的自己看吧

给出两个字符串,用第二个字符串去匹配第一个字符串,可以对第二个字符串进行删除或插入操作,一位匹配成功得8分失败-5分,如果插入或删除,对于连续插入或删除m个数减(4+m * 3)分。求最终得分的最大值。

用dp[i][j]表示第二个串的第i位和第一个串的第j位匹配得分的最大值,dp[i][j]可以是dp[i - 1][j - 1]继续匹配也可能是dp[i - 1][k]通过插入一段串得到或者dp[k][j - 1]通过在第二个串删除一段得到。最后扫描第二串匹配完的结果找最大值。

dp[i][j]分别代表第二串匹配到第一串匹配j的最大值

  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. const int N=;
  6. int dp[N][N],n,m,T;
  7. char a[N],b[N];
  8.  
  9. int main(){
  10. scanf("%d",&T);
  11. while(T--){
  12. scanf("%s%s",a+,b+);
  13. n=strlen(a+);
  14. m=strlen(b+);
  15. for(int i=;i<=m;i++){
  16. dp[i][]=--*i;
  17. for(int j=;j<=n;j++){
  18. dp[i][j]=dp[i-][j-];
  19. for(int k=;k<j-;k++)
  20. dp[i][j]=max(dp[i][j],dp[i-][k]--*(j-k-));//在第一串多添加
  21. for(int k=;k<i-;k++)
  22. dp[i][j]=max(dp[i][j],dp[k][j-]--*(i-k-));//在第二串多补上
  23. if(a[j]==b[i]) dp[i][j]+=;
  24. else dp[i][j]-=;
  25. }
  26. }
  27. int ans=dp[m][];
  28. for(int i=;i<=n;i++)
  29. ans=max(ans,dp[m][i]);
  30. printf("%d\n",ans);
  31. }
  32. return ;
  33. }

UVAlive 6697 Homework Evaluation的更多相关文章

  1. UVaLive 6697 Homework Evaluation (DP)

    题意:给出一个长字符串,再给一个短字符串,进行匹配,如果第i个恰好匹配,则 +8,:如果不匹配,可以给长或短字符串添加-,先后匹配,这样-3, 连续的长字符串添加-,需要减去一个4:也可不给添加-,则 ...

  2. UVALive - 4108 SKYLINE[线段树]

    UVALive - 4108 SKYLINE Time Limit: 3000MS     64bit IO Format: %lld & %llu Submit Status uDebug ...

  3. bzoj 4320: ShangHai2006 Homework

    4320: ShangHai2006 Homework Time Limit: 10 Sec Memory Limit: 128 MB Description 1:在人物集合 S 中加入一个新的程序员 ...

  4. Utility2:Appropriate Evaluation Policy

    UCP收集所有Managed Instance的数据的机制,是通过启用各个Managed Instances上的Collection Set:Utility information(位于Managem ...

  5. SQL SERVER 2012 从Enterprise Evaluation Edtion 升级到 Standard Edtion SP1

    案例背景:公司从意大利购买了一套中控系统,前期我也没有参与其中(包括安装.实施都是第三方),直到最近项目负责人告诉我:前期谈判以为是数据库的License费用包含在合同中,现在经过确认SQL Serv ...

  6. UVALive - 3942 Remember the Word[树状数组]

    UVALive - 3942 Remember the Word A potentiometer, or potmeter for short, is an electronic device wit ...

  7. UVALive - 3942 Remember the Word[Trie DP]

    UVALive - 3942 Remember the Word Neal is very curious about combinatorial problems, and now here com ...

  8. HDU 1789 Doing Homework again(贪心)

    Doing Homework again 这只是一道简单的贪心,但想不到的话,真的好难,我就想不到,最后还是看的题解 [题目链接]Doing Homework again [题目类型]贪心 & ...

  9. Evaluation Clustering methods

    There are many evaluation measures available like entropy, recall, precision, F-measure, silhouette ...

随机推荐

  1. Uva796 Critical Links

    用tarjan缩点 然后用dfn[u] < low[v]缩点并且保存起来 在sort一遍输出 #include<stdio.h> #include<string.h> # ...

  2. CDQ分治与整体二分学习笔记

     CDQ分治部分 CDQ分治是用分治的方法解决一系列类似偏序问题的分治方法,一般可以用KD-tree.树套树或权值线段树代替. 三维偏序,是一种类似LIS的东西,但是LIS的关键字只有两个,数组下标和 ...

  3. Spring乱码问题解决方案

    请求乱码 GET请求乱码: 原因:请求参数带在url地址上.url地址什么时候解析? tomcat收到请求对url进行编解码(ISO8859-1) 解决方案:在tomcat的8080端口配置出加上 U ...

  4. 以Attribute加上Header验证

    建立新FilterAttribute继承AuthorizationFilterAttribute,覆写OnAuthorization拦截传入的HttpActionContext内容判断是否有传入指定的 ...

  5. 【NOIP数论内容整理】

    转载{大佬传送门} 附赠wakelin一句评论:日均二百七,全场rank1:千古神犇ZAY,吊打清华钟皓曦%%%

  6. ImageMagick:获取一行文字的宽与高

    double *fm = MagickQueryFontMetrics(mw_temp, dw_wand, text_utf8); //获取文字在指定字体和字号下的宽度和高度 double textW ...

  7. interface 界面&接口

    接口:接口(硬件类接口)是指同一计算机不同功能层之间的通信规则称为接口.接口(软件类接口)是指对协定进行定义的引用类型. 界面:窗口,显示 英文解释都是interface partly from ba ...

  8. 向redis中添加删除list列表

    转: 向redis中添加删除list列表 2018年04月18日 15:44:54 luo_yu_1106 阅读数:4082   一.添加 向redis中添加队列有两种方式 1.lpush l是lef ...

  9. arm-fsl-linux-gnueabi交叉编译器安装

    系统:Ubuntu 14.04 64bit 编译器gcc version 4.4.4 (4.4.4_09.06.2010) 解压编译器到相应路径(注:当我解压放到/home/cross_compile ...

  10. mfc 中的error RC2104 : undefined keyword or key name

    http://bbs.csdn.net/topics/340253236 需要在此文件中添加该按钮 声明一下. 但是在resource.h中已经定义了:#define IDC_ETHCONF_CHKP ...