====字符串====
「已注销」
这个作者很懒,什么都没留下…
展开
-
HDU 5510 Bazinga (kmp + 小剪枝)
思路:没什么好说的。AC代码:#include <iostream> #include <string.h> #include <cstdio>using namespace std;char s[505][2200]; int vis[3000]; int nex[505][2200];void getnext(char *a,int j){ int k = 0; for(int原创 2016-10-02 19:06:46 · 305 阅读 · 0 评论 -
HDU 5918 Sequence I (kmp)
思路:从a串第一个元素i开始作为起点,他的下一个节点位置为i+=p,由此到结尾进行一遍kmp。 然后在从a串的第二个元素开始作为起点,他的下一个节点位置为i+=p,由此到结尾进行一遍kmp。 直到以p位置为起点,进行一遍kmp。至此将a串遍历了一遍,结果也就出来了。AC代码: #include <iostream> #include <cstdio> #include <ctime> #incl原创 2016-10-04 21:04:27 · 509 阅读 · 0 评论 -
UVA - 11019 Matrix Matcher (AC自动机(二维匹配) + dp)
题意:给你一个 m*n 的母矩阵,再给你一个 mm*nn 的子矩阵,问你母矩阵里有多少个不同位置的子矩阵。题解:ac自动机在二维上的运用。 与一维不同的地方主要是:1,val数组变成了vector。2,查询时的操作结合dp数组的状态的一系列操作。 1)思考一下为什么val要由数组变成vector: 假设这么一个样例: 3 3 B B B B B B B B B 2 2 B B原创 2016-08-01 15:45:26 · 333 阅读 · 0 评论 -
UVA - 11468 Substring ( AC自动机 + dp)
原题网址:http://acm.hust.edu.cn/vjudge/problem/31655 题意: 给出一些字符和各自对应的选择概率,随机选择L次后将得到一个长度为L的随机字符串S(每次独立随机)。 给出K个模板串,计算S不包含任何一个模板串的概率(即任何一个模板串都不是S的连续子串)。 题解:ac自动机 + dp 重点是dp。。。仔细看看哪一段的代码好了。#include <ios原创 2016-07-31 16:55:59 · 348 阅读 · 0 评论 -
UVALIVE Dominating Patterns (AC自动机)
原题网址:http://acm.hust.edu.cn/vjudge/contest/124242#problem/E 额,其实这算不上是原题了,,但原题的网页我题解:总体上是模板题,但有个小地方自己一开始凭借想象力做的。。。后来发现还是要好好读题。。。 卡点:题目说的是 no less than 也就是说,当这些都是0的时候,需要把所有的patterns都输出。AC代码:#include <i原创 2016-07-30 14:45:08 · 306 阅读 · 0 评论 -
HDU 3065 病毒侵袭持续中 (AC自动机 + hdu有毒)
原题网址:http://acm.hdu.edu.cn/showproblem.php?pid=3065题意:因为是中文题,我就不翻译成英语了。。。思路:ac自动机的模板题。吐槽:hdu有毒,明明没说多组样例,但删了while(cin>>)就错了,,,就WA了,,,这不是很尴尬,能不能把中文说清楚。。。#include <bits/stdc++.h> #define maxnode 50001 #de原创 2016-07-30 09:28:34 · 320 阅读 · 0 评论 -
HDU 2896 病毒侵袭 (AC自动机)
原题网址:http://acm.hdu.edu.cn/showproblem.php?pid=2896博主不想说话并扔了一串代码给你。#include <bits/stdc++.h> using namespace std;#define maxnode 100001 #define sigma 128struct ac_automation{ int ch[maxnode][sigma];原创 2016-07-29 20:54:47 · 88 阅读 · 0 评论 -
HDU 2222 Keywords Search (AC自动机)
http://acm.hdu.edu.cn/showproblem.php?pid=2222 题意:给你一些单词,然后给你一段很长的话,问你话里有多少个之前给你的那些单词(重复的只算一次)。 方法:AC自动机,即把trie树和kmp的失效匹配相结合。AC代码如下:#include <iostream> #include <cstdio> #include <string.h> #include原创 2016-07-28 18:59:01 · 94 阅读 · 0 评论 -
Codeforces Round #396(Div. 2) C. Mahmoud and a Message (dp)
思路:首先定义dp数组,dp[i]代表长度为i的字符串最多的种类数。 对于已经存在的长度为l的字符串,我们从下一个字符k,即dp[k+1]开始转移状态。 对于这个状态我们可以试着由 dp[k]和dp[k+1]转移过来(如果limit满足条件的话,然而从题目可知,长度为1的一定会满足条件),也可以试着由dp[k-1]和字符串(k,k+1)转移过来(如果满足limit)。 当然limit是随着每个原创 2017-10-02 19:03:35 · 272 阅读 · 0 评论