摘要: 这个题目是这样的。给你三个字符串A,B,C,(C一定是A和B的一个公共子序列)。现在要求你构造出一个串D,使得D同时为A和B的子序列,且C是D的一个连续子串。求D的最大可能长度。很简单的一个DP题。其实这个题目有三个预处理就可以搞定了。1、f1[i][j]:A的前i个字符,B的前J个字符的最长公共子序列。2、f2[i][j]:A的i个字符以后,B的第J个字符以后的字符的最长公共子序列。3、A和B串以某个位置开始作为C的子序列时,最近的匹配距离(最近匹配完的那个地方)。有了这三个预处理,剩下的只要直接暴力枚举A和B中匹配的开始位置即可。#include #include #include #de 阅读全文
posted @ 2013-11-29 19:25 092000 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 很有意思,很好的题目。这样的,一个n*m的扫雷地图,告诉你哪些地方是有雷的。一个人如果点在了空白处,那么与其相邻的(八个方向)的数字以及空白都会递归地显示出来,如果点在数字上面,那么就只会显示这一个数字。游戏过程中,谁第一个无法点开一个非雷的格子算输。这、、、、其实可以看成是nim博弈问题,但是有一点点点点的不同。我们由于题目说明了数字的部分不会有重复的,所以我们把一个由空白部分连成的区域看成是一堆石子,那么有的单独的数字就是一堆石子且只有一颗。同时我们把所有的空白区域看成是一个石子,这样问题就转化为了给你N堆石子,以及每一堆的石子的数量,现在要你求出博弈的结果是先手胜还是后手胜?由于每次可选 阅读全文
posted @ 2013-11-29 19:19 092000 阅读(315) 评论(0) 推荐(0) 编辑