题目:http://acm.hdu.edu.cn/showproblem.php?pid=4046
题意:给出一个字符串,统计这个字符串任意区间中“wbw”出现的次数。 规定两种操作,一是查询任意区间“wbw”出现次数;二是修改某一位置的字符。
分析:比较明显的线段树,单点更新,区间查询。 线段树记...
分类:
其他好文 时间:
2014-05-04 11:16:37
阅读次数:
329
题目链接题意 :
给你两个字符串,两个字符串都有共同的字母,给你每个字母的值,规则是,找出两个字符串中的共同的一个字母,然后这个字母的值就可以加到自己的分数上,但是这步操作之后,这两个字母及其之前的字母都要删除掉,问你能够得到的最大的值是什么。思路:最长公共子序列,加了一个权值。
1 #includ...
分类:
其他好文 时间:
2014-05-04 11:13:24
阅读次数:
242
题目链接题意 :
有n个饭店,要求建k个供应点,要求每个供应点一定要建造在某个饭店的位置上,然后饭店都到最近的供应点拿货,求出所有饭店到最近的供应点的最短距离。思路 :
一开始没看出来是DP,后来想想就想通了。预处理,如果要在下标为 i 到 j 的饭店建一个供应点,那一定是在下标为(i+j)/2的位...
分类:
其他好文 时间:
2014-05-04 09:54:50
阅读次数:
208
题意:给两个字符串,求一个最短的子串。使得这个子串在两个字符串中出现的次数都等于1.出现的定义为:可以重叠的出现。
解法:后缀数组的应用。从小枚举长度。如果一个长度len合法的话:则一定存在这个样的sa[i]排名。sa[i]与s[i+1]的公共前缀长度大于等于len,且sa[i]与[i-1]的公共前缀长度小于len,同时sa[i+1]与[i+2]的公共前缀长度小于len,同时保证sa[i...
分类:
其他好文 时间:
2014-05-04 09:42:00
阅读次数:
275
题目来源:CF 427D Match & Catch
题意:给出2个字符串 求最短的连续的公共字符串 并且该字符串在原串中只出现一次
思路:把2个字符串合并起来求height 后缀数组height的应用
#include
#include
#include
using namespace std;
const int maxn = 100010;
char s[maxn];
int s...
分类:
其他好文 时间:
2014-05-04 09:32:45
阅读次数:
315
题意:在n*m(1
解法;很经典的状压模型。先将每一行的合法状态求出来,12的时候最多377个合法状态。然后进行与行之间的状态转移。最坏复杂度12*(377^2)
代码:/****************************************************
* author:xiefubao
*********************************...
分类:
其他好文 时间:
2014-05-04 09:21:40
阅读次数:
301
HDU 3032 Nim or not Nim? (博弈之求SG函数)
题意:经典Nim博弈游戏变换,给你n堆石子pi,每堆有pi个石子,
Alice和Bob轮流取石子,每次可以从任意一堆中拿走任意个石子,也可以将某一堆石子分成两个小堆
(每堆石子个数必须不能为0),先拿完者获胜
思路:求SG函数后找规律;...
分类:
其他好文 时间:
2014-05-04 09:14:21
阅读次数:
255
大致题意:每个样例包含两行,第一行输入n个字符,可能是无序的。第二行输入成对的a b,代表a要在b前面。输出所有的符合这样的序列。
思路:很明显的拓扑排序。要输出所有的序列,那么就从入度为0的点进行dfs,每次选择一个入度为0的点,加入输出序列并把与它相邻的点的入度减一。dfs结束后要把状态再改回来。
#include
#include
#include
#include
#i...
题目链接:1371 - Period
题意:给定两个字符串,可以把第二个字符串分成若干份,然后由第一个字符串去操作得到每个分出来的字符串,代价为其中的最大值,要求代价的最小值
思路:第一个字符串长度为50,所以答案肯定不会超过50,可以二分答案0到50,不二分的话直接就超时了,然后每次判断进行dp操作,类似LCS问题,只不过原来是相同的+1,现在变成不同的+1,因为不同的肯定就要进行操作了,然...
分类:
其他好文 时间:
2014-05-04 09:00:23
阅读次数:
274
题意:
每个' . '有一个姑娘, E是出口,'.'是空地 , 'X‘ 是墙。
每秒钟每个姑娘可以走一步(上下左右)
每秒钟每个出口只能出去一个人
给定n*m的地图, 时限T
问所有姑娘能否在T秒内逃生,若能输出最小值,不能输出"impossible"
思路:
显然是二分答案+网络流判可行。
因为每个出口每秒钟只能出去一个人,那么就把每个出口按时间拆点,则T秒钟就拆成T个点。...
分类:
其他好文 时间:
2014-05-04 08:56:58
阅读次数:
353