摘要:
http://acm.hust.edu.cn/vjudge/problem/16883 题意:要构造一个长度为n的字符串,然后有m模板串构成一个集合(m<=10),构造出来的字符串至少含有k种模板串。全部为小写。 题解: 没有打。d[s][l][x]表示当前已有的模板串集合s,已构造了长度为l的串, 阅读全文
摘要:
http://acm.hust.edu.cn/vjudge/problem/16405 题意:给定一些只含大写字母的病毒串,再给一个文本串,问文本串中每个病毒串各出现了多少次 题解: 就是用AC自动机,在每个节点末尾有个id记录是哪个单词的末尾,然后如果同时是多个单词的末尾就用一个next数组链状记 阅读全文
摘要:
http://acm.hust.edu.cn/vjudge/problem/33057 题意:在二维文本串T中查找一个二维模板串P出现了多少次。 题解: 拆分模板串P的每一行,建AC自动机。拆分文本串T的每一行,在自动机中与P匹配,ct[i][j]表示以点(i,j)为左上角、与P等大的矩形有多少个对 阅读全文
摘要:
http://acm.hust.edu.cn/vjudge/problem/31655 题意:给定k个模板串,n个字符以及选择它的概率pro[i],要构造一个长度问L的字符串s,问s不包含任意一个模板串的概率。 题解: ed[i]标记trie上的点i是不是任意一个模板串的结尾(在求fail的时候ed 阅读全文
摘要:
http://acm.hust.edu.cn/vjudge/problem/19224 题意:给定n个单词,一个字符串,问哪些单词在字符串中出现的次数最多。单词aba,文本ababa,则aba出现了2次。 题解:每找到一个记得要顺着fail找到所有单词。 阅读全文
摘要:
http://acm.hust.edu.cn/vjudge/problem/16379 题意:给定多个单词,多次询问符合某前缀的单词有多少个。 题解:tire。数组开了5*10^6才A,不然就RE。 阅读全文
摘要:
http://acm.hust.edu.cn/vjudge/problem/16403 题意:给定n个单词,一个字符串,问字符串中出现了多少个单词。(若单词her,he,字符串aher中出现了两个单词) 题解: 每个单词末尾节点sum=1;find的时候每个点都顺着fail往上跳,加上该节点的sum 阅读全文
摘要:
http://acm.hust.edu.cn/vjudge/problem/28438 题意:给定n个字符串,问用strcmp函数比较这些字符串共用多少次比较。 题解: 插入一个‘#’作为字符串的结束符,避免特殊判断太乱。插入的时候,如果走过以前插入的字符,那就把比较的次数加上。要用long lon 阅读全文
摘要:
http://acm.hust.edu.cn/vjudge/problem/22109 题意:给定n个单词,一个字符串,问把这个字符串划分为若干个单词的连接(单词可重复使用)有多少种方案(mod20071027)。 题解: 设d[i]为从第i个字母开始的后缀有多少种匹配方案。if 单词x是当前后缀的 阅读全文
摘要:
AC自动机的模板 1 void buildAC() 2 { 3 while(!q.empty()) q.pop(); 4 q.push(0); 5 while(!q.empty()) 6 { 7 int x=q.front();q.pop(); 8 int fail=a[x].fail; 9 for 阅读全文
摘要:
http://www.hzxjhs.com:83/contest/55 说实话这次比赛真的很水。。然而我只拿了140分,面壁反思。 第一题: 发现数位和sum最大就是9*18,k最大1000,那么sum*k最大不过2*10^5,若能被x整除,则x也不超过200000,暴力即可。 不知道学军OIlon 阅读全文