自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

YihAN_Z

ただのあほです

  • 博客(18)
  • 收藏
  • 关注

原创 BZOJ 2434 [Noi2011] 阿狸的打字机 Fail树

2017.3.17补… 题目大意:造一台打字机(滑稽),要求支持:1.在末尾添加一个字符 2.删除结尾字符 3.打印当前字符串 4.回答打印出的第x个字符串在第y个字符串中出现了几次。询问一个字符串在另一个字符串中的出现次数可以想到利用AC自动机中构造出的Fail树的性质(类似BZOJ3172)。要如何回答询问呢?查询x在y中出现了几次,就是查询Fail树上x的子树中有多少个结点属于y.这样的话,

2017-01-17 19:55:20 383 2

原创 BZOJ 3172 [Tjoi2013] 单词 Fail树

题目大意:给出n个单词,输出每个单词在所有单词中出现的次数。fail树真的是神奇…这里讲的还不错,可以看看(原来我写的AC自动机是Trie图)Fail树的一个性质是,某个结点对应的字符串肯定是其子树结点对应的字符串的后缀。这道题想找出每一个串在所有的串中匹配的次数,这时就可以利用fail树的这个性质,而且fail树也是建立在Trie上的,统计子树中所有结点个数,就代表其在所有串中的前缀中作为后缀出现

2017-01-17 16:13:43 459

原创 BZOJ 1030 [JSOI2007] 文本生成器 AC自动机+DP

题目大意:给出n个模式串,给定m,表示将会随机生成长度为m的串,求出随机生成的串中,包含模式串的串的个数%10007的值若直接求包含模式串的串的个数,DP状态不好转移(可能在串的任意位置出现模式串,可能出现多个模式串,不方便统计方案数)。所以可以利用补集的思想,用总数减去不包含的串的个数即为答案。这样就方便设计状态了。设状态f(i,j)表示在自动机中的i号结点匹配了长度为j的串仍为出现模式串的方案数

2017-01-17 10:57:52 288

原创 BZOJ 1212 [HNOI2004] L语言 AC自动机+DP

题目大意:给出n个模式串,接着给出m个主串,求每个主串中的一个最长前缀使得其能被分割成若干个模式串。Trie树上暴力时间复杂度O(1M*10*20),过亿应该就很卡了吧…但是也能过,不过写AC自动机稳一点吧。设状态f(i)为长度为i的前缀是否能通过几个模式串表示出来。模式串建成AC自动机,结点上记录这个串的长度,用主串在上面跑,若匹配到了一个长度为j的串,则f(i) |= f(i-j).需要注意的是

2017-01-17 09:18:55 476

原创 HDU 2222 Keywords Search AC自动机

题目大意:有T组数据,每组数据中有n个模式串,给出一个主串,求出在主串中有多少个模式串出现过AC自动机裸题。AC自动机就是在Trie上做KMP,处理出在某位置失配后应该跳到什么位置,然后正常查询即可。 需要注意的是,还要处理一下不断地跳fail遇到第一个单词在什么位置,统计答案时也要统计一下。板子在这里。#include <cstdio>#include <cstring>#include <

2017-01-16 20:31:55 254

原创 NOIP2016 模拟赛 By C_SUNSHINE Simple 数论

题目大意:对于给定正整数 a,b,我们称正整数c为好的,当且仅当存在非负整数a,b,使得 a*x+b*y=c。 现在给出多组数据,对于每组数据,给定 a,b,q,求[1,q]内有多少个正整数不是好的。a<=1e5,b<=1e9,q<=1e18,T<=10 好吧是我弱鸡想不出怎么做只好敲了60分暴力…(看数据范围猜出来是枚举n然而并没想出来)现在要求出[1,q]有多少数是不好的,也就是q-好数的个数。

2017-01-14 16:17:16 1009

原创 BZOJ 3670 [Noi2014] 动物园 KMP

题目大意:给出一个长为n的字符串(n<=1e6),求num数组的累乘和模 1,000,000,007,其中num(i)={长度为i的前缀中字符串S’ 的数量,其中S ‘既是该前缀的前缀也是该前缀的后缀,且该后缀与该前缀不重叠}题目背景已经铺垫了,该题可以用KMP解决。在计算nxt数组时,我们可以顺便计算出cnt数组(跳几次nxt到0),表示有多少前缀可以匹配到当前前缀包含的后缀,举个例子,nicon

2017-01-13 10:33:52 464

原创 BZOJ 3675 [Apio2014] 序列分割 斜率优化

题目大意:将一个长度为n的非负整数序列分割成k+1个非空的子序列,即将序列切割k次。首先选择一个长度超过1的序列;然后选择一个位置,并通过这个位置将这个序列分割成连续的两个非空的新序列。每次进行上述步骤之后,将会得到一定的分数。这个分数为两个新序列中元素和的乘积。求最大得分。首先,对于一段序列想分成A|B|C|D四份,先分成A|BCD与先AB|CD的得分是相同的。这样这个问题就具有了子问题的性质,可

2017-01-12 15:11:13 366

原创 BZOJ 3527 [Zjoi2014] 力 FFT

给出n个数qi,求 n<=100000暴力需要O(n2)的时间,想到用FFT加速(有规律的)乘法1。 构造两个多项式 将两个多项式相乘,其中第n项到第2n-1项即为答案#include <cstdio>#include <cmath>#include <algorithm>#define N 600000using namespace std;const double pi=

2017-01-11 13:58:18 868

原创 BZOJ 1056 [HAOI2008] 排名系统 Tire树+Treap(Splay)

题目大意:排名系统通常要应付三种请求:上传一条新的得分记录、查询某个玩家的当前排名以及返回某个区段内的排名记录。当某个玩家上传自己最新的得分记录时,他原有的得分记录会被删除。为了减轻服务器负担,在返回某个区段内的排名记录时,最多返回10条记录。要求支持插入、查询排名、查询第k大及后继,需要用到平衡树。玩家的名字需要用Trie树保存。#include <cstdio>#include <cstdli

2017-01-11 11:17:32 531

原创 BZOJ 2194 快速傅立叶之二 FFT

题目名剧透… FFT可以用于快速求卷积(即下标和为定值),有一常用技巧即构造序列使表达式变为卷积的形式,本题将a数组翻转(即令a’[i]=a[n-i-1]),表达式就变成了a[i]*b[i-k]=a’[n-i-1]*b[i-k],即卷积的形式,则将a’与b相乘,答案取第n-1项~第0项即可#include <cstdio>#include <cmath>#include <algorithm>

2017-01-11 10:34:15 529

原创 BZOJ 2179 FFT快速傅立叶 FFT

picks的博客对我有很大启发,里面写的很详细很明白,传送门Fast Fourier Transform那么这道就是FFT裸题了。 板子在这里#include <cstdio>#include <cmath>#define N 140000using namespace std;const double pi = acos(-1);const double DFT = 2.0, IDFT

2017-01-07 20:12:18 349

原创 BZOJ 1176 && BZOJ 2683 CDQ分治

双倍经验题…放到一起了CDQ分治也叫做时间分治。即把操作序列按照一定的顺序排序之后以时间为界进行分治。算法过程1.递归处理左、右区间内部修改对询问的影响。 2.处理左区间修改对右区间询问的影响。 (因为不理解这里看了好久…) 这样做可以保证每一个询问之前的修改都会影响到它的答案。比如这道题题目大意:给定一个n*n的矩阵(初始全0),有以下操作: 1.把(x,y)处加上z 2.询问(x1,y

2017-01-05 17:11:45 428

转载 【转载】网络流学习笔记

觉得写得很好,学习一下。原文传送门http://blog.leanote.com/post/mrazer/%E7%BD%91%E7%BB%9C%E6%B5%81%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0巧妙运用拆点与拆边。 在流模型中(若为出边): 容量设为+∞:让水流不要在这里卡住,来者不拒,你给我来多少我都能给你输送出去,也就是让这个点随便流出,只限制流入。

2017-01-04 19:28:38 444

原创 BZOJ 3932 [CQOI2015] 任务查询系统 可持久化线段树

题目大意:有n个任务持续m秒,每个任务从si秒开始到ei秒结束且有一个优先级pi,有m个询问,回答第xi秒时正在执行的任务中优先级前k小和,强制在线。根据时间的变化,任务会开始或结束。我们想知道任一时刻任务的执行情况,这里我们就需要用到可持久化数据结构。对于这道题,我们可以维护一个权值线段树1。可持久化数据结构,暴力地想就是每个版本完全复制一个保存起来,但是空间不够用。 如果每次只是修改

2017-01-03 21:28:39 754 3

原创 BZOJ 2038 [2009国家集训队] 小Z的袜子 莫队算法

题目大意:给出n个元素的序列,m个区间,求 其中f(j)表示在区间内颜色j出现的次数。 n,m<=50000如果对于每个区间暴力统计颜色个数然后计算,时间复杂度O(mnq),q为颜色种类数。 瞬间爆炸。考虑怎么优化不难发现,如果已知[l,r]的答案,可以在O(1)的时间内求出[l,r+1]/[l+1,r]/[l-1,r]/[l,r-1]的答案并更新颜色信息,这就是(传说中的)莫队算法。但是

2017-01-02 18:41:52 417

原创 BZOJ 1951 [Sdoi2010] 古代猪文 数论 Lucas定理

题目大意:给定N,G,求 N,G不妨设那么如果求出来x,剩下的就是一步快速幂。问题转化为如何求x。设p=999911659 我们发现p是一个质数且G不可能为p的倍数,根据费马小定理有 即在mod p的意义下G^(p-1)=1 可以得到 其中我们还注意到,由于N,k很大,所以不能递推计算,只能用阶乘公式计算,这时需要用到Lucas定理。 然而计算组合数要用到

2017-01-02 10:49:49 846 2

原创 BZOJ 2186 [Sdoi2008] 沙拉公主的困惑 逆元/欧拉定理

题目大意:有T次询问,给定一个质数R作为模数。每组询问给定n和m,求1至N!中与M!互质的数的数量对R取模后的值。 数据范围T<=10000求[1,N!]中有多少数与M!互质…好像不会但是我们可以求[1,M!]中有多少数与M!互质。我们有欧拉函数 φ(M!)即[1,M!]中与M!互质的数的个数,p(i)即M!的质因数,每种质因数只有一个。现在想办法怎么把区间扩大到[1,N!]。不难发现,若一个数x

2017-01-01 11:13:25 450

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除