摘要:
题意:求一个文章(长度5.1e6)里面出现了多少个指定的模式串。重复出现只记一次。而且如果两个模式串都出现的情况下,一个是另一个的子串,则该子串不算出现过。分析:AC自动机。由于子串不算所以加一些特殊处理:1.在文章匹配过程中,如果出现了一个模式串我们不是把匹配数量+1,而是记录那个出现过vis[i... 阅读全文
摘要:
数位DP#include #include using namespace std;const int MAX_DIGIT = 15;const int MAX_K = 10005;long long n;int f[MAX_DIGIT];long long memoize[MAX_DIGIT][M... 阅读全文
摘要:
基本的数位DP,注意记录那些状态可以用最小的空间判断出整除性。#include #include using namespace std;#define D(x) const int MAX_DIGIT_NUM = 20;int f[MAX_DIGIT_NUM];long long memoize[... 阅读全文
摘要:
数位dp,许多数位dp需要统计某种模式(子串)出现的数量,这种题通常需要在递归参数中加入高位已经出现过的模式的数量。#include #include using namespace std;#define D(x) const int MAX_DIGIT = 40;long long n;int ... 阅读全文
摘要:
数位dp,需要记录前导0。数位dp中需要注意统计0,00,000……这些数字。数位dp的写法可以分为两类。由于我们通常采用记忆化搜索的方式进行dp,所以我们有一个记忆化数组。一种是记忆化数组的意义是不通用的,对于不同case,该数组的值不同。另一种是通用的,不同case,数组的值不变。对于第一种情况... 阅读全文