这是一道神题。
首先我们需要建立AC自动机,然后再建个Fail树,之后发现
如果询问a串在b串中出现了几次,那么只需要看b串在AC自动机上所有的节点中有多少个节点,在a串的结束节点在Fail树上的子树中就可以了。
然后这样做就很可以了,但是仍然不能AC,
这时我们只需要按照Fail树的dfs序建立数据结构(我写了树状数组)进行区间查询就好了。
这时对于以上的b串,...
分类:
其他好文 时间:
2015-01-19 17:15:24
阅读次数:
128
给一个区间,求该区间内 质因子个数等于k的数 的个数。
暴力预处理一下啦
#include
#include
using namespace std;
const int maxn=10000010;
bool pri[maxn];
int cnt[maxn];
void init()
{
memset(pri,1,sizeof pri);
memset(cnt,0,s...
分类:
其他好文 时间:
2015-01-19 15:47:37
阅读次数:
179
题目大意:有n只狼,每只狼有一个自己攻击的属性,还有一个属性就是可以给左边和右边的狼提高攻击力。这个左边的意思是如果离得最近的那个死了,攻击力加给离得左边没死的最近的一个。
思路:一开始以为贪心可解,但是显然想简单了啊。后来知道了是区间dp,dp[i][j]代表在区间i到j内的最小伤害数。关键是划分区间,我们让设k为区间内最后死的那匹狼,那么区间内就有状态转移公式:dp[i][j] = min(...
分类:
其他好文 时间:
2015-01-19 15:45:48
阅读次数:
244
刘汝佳:《训练指南》Page(194)#include #include #include #include using namespace std;//一维树状数组基础模板int lowbit(int x){ return x&(-x);}int c[1001];int sum(int x)...
分类:
编程语言 时间:
2015-01-19 14:09:29
阅读次数:
323
题目大意:给定一个长度为n的序列,求哪些长度为m的区间满足区间内最大值与最小值之差小于等于c
利用单调队列维护区间内的最大值和最小值- - 硬搞就可以了- -
刷刷水题真爽- -
#include
#include
#include
#include
#define M 1001001
using namespace std;
int n,m,c,a[M];
int q_max[M]...
分类:
其他好文 时间:
2015-01-18 22:43:00
阅读次数:
204
问题描述:
Implement int sqrt(int x).
Compute and return the square root of x.
基本思路:
采用二分查找法; 犹豫输入x是int型 ,int最大范围是2147483647 ,所以返回结果的范围0-46340. 注意要根据确定的区间去查找正确的返回值,如果大于46340的数的平方将超出int的表示范围。
代码:...
分类:
其他好文 时间:
2015-01-18 17:18:16
阅读次数:
99
题目链接:BZOJ - 1026题目分析这道题是一道数位DP的基础题,对于完全不会数位DP的我来说也是难题..对于询问 [a,b] 的区间的答案,我们对询问进行差分,求 [0,b] - [0,a-1] 的答案。这样就化繁为简了。具体过程见代码中的注释。代码#include #include #inc...
Problem Description
Alice is so popular that she can receive many flowers everyday. She has N vases numbered from 0 to N-1. When she receive some flowers, she will try to put them in the vases, o...
分类:
其他好文 时间:
2015-01-18 11:53:25
阅读次数:
237
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1564分析:首先因为每个点的数据值不变,所以无论树的形态如何变,树的中序遍历肯定不变,就是所有数据值从小到大排。然后设f[i][j][v]表示中序遍历的i~j位组成一颗子树,其中要求权值都...
分类:
其他好文 时间:
2015-01-17 23:33:47
阅读次数:
349
题目描述:给定一个数组,判断数组内是否存在一个连续区间,使其和恰好等于给定整数k。输入:输入包含多组测试用例,每组测试用例由一个整数n(1> map = new HashMap>(); // 记录前i个数的和和值相同的下标 int sum = 0; for ...
分类:
其他好文 时间:
2015-01-17 19:27:31
阅读次数:
208