上一页 1 ··· 15 16 17 18 19 20 21 22 23 ··· 31 下一页
摘要: 模板 1 #include<stdio.h> 2 #include<algorithm> 3 #include<string.h> 4 #include<stdlib.h> 5 #include<math.h> 6 //#include<bitset> 7 //#include<iostream> 阅读全文
posted @ 2017-12-13 18:22 Blue233333 阅读(129) 评论(0) 推荐(0)
摘要: n<=150个点,m<=150条路,每条路Ai,Bi,Di表示Ai到Bi有一条有向边,使用他前至少要走Di条路,问1到n最少走几条路。 又是n^4过150的题。。。。 不同于传统的最短路,这次的最短路包括了m个图,并且状态和走的路径数有关。所以要一个状态Can(i,j)表示能否到达点i走j步。 由于 阅读全文
posted @ 2017-12-13 14:17 Blue233333 阅读(384) 评论(0) 推荐(0)
摘要: 感觉这才算入门题吧。。前面那些线段树练习,改几个字符就过了一定要搞成几道题。。 n<=2e5的数列,给常数K<=2e5,m<=2e5个操作,区间加,问一个区间里K的倍数。 这题空间???当成512MB吧。。n*sqrt(n)开得下 每个块记cnt(x,i)表示第x个块有多少数%K=i,以及整块+标记 阅读全文
posted @ 2017-12-12 14:04 Blue233333 阅读(175) 评论(0) 推荐(0)
摘要: n<=300000的串,每一位有权<=1e9,对每个r=0~n-1问lcp长度为r的两个后缀有多少种,并在其中找出一个二元后缀使得他们开头的字符对应权值乘起来最大。 n*n*n:略 n*n*logn:哈希,略 lcp长度为指定长度我不会,但longes common suffix--最长公共后缀,这 阅读全文
posted @ 2017-12-11 19:41 Blue233333 阅读(193) 评论(0) 推荐(0)
摘要: n<=2000的两个串,求四个问: (1) A的一个最短的子串,它不是B的子串 (2) A的一个最短的子串,它不是B的子序列 (3) A的一个最短的子序列,它不是B的子串 (4) A的一个最短的子序列,它不是B的子序列 一开始??????嗯要识别子串和子序列需要俩东西:序列自动机和后缀自动机。 前两 阅读全文
posted @ 2017-12-09 07:27 Blue233333 阅读(403) 评论(0) 推荐(0)
摘要: 求一个字符串的∑ ∑ len[i] + len[j] - 2 * lcp(i, j),其中i,j表示从i,j开始的后缀。 方法一:SA+单调栈,自行yy。 方法二:SAM构造出来,然后每个状态对答案的贡献就是:C(|right_s|,2)*(Max_s-Max_parent_s)。前面使用的变量名含 阅读全文
posted @ 2017-12-08 20:46 Blue233333 阅读(180) 评论(0) 推荐(0)
摘要: n<=100000个字符的小写字母串,问用前m<=26个小写字母能拼出多少个和原串lcs=n-1的字符串。 首先把字符串划分成若干个连续相同的段,如aaa|bb|c|dd,然后题目即要求从里面挖掉一个再丢回去一个。如挖掉a,那么就剩aa|bb|c|dd,可以发现一个连续相同段挖谁都一样所以一个连续相 阅读全文
posted @ 2017-12-08 20:32 Blue233333 阅读(761) 评论(0) 推荐(0)
摘要: 问两个串的最长公共子串,n<=100000。 SAM可以直接搞当然SA哈希都可以。。类似于KMP的做法,如果沿parent边走要顺势修改匹配位置。 1 #include<stdio.h> 2 #include<string.h> 3 #include<algorithm> 4 #include<st 阅读全文
posted @ 2017-12-07 12:07 Blue233333 阅读(176) 评论(0) 推荐(0)
摘要: n<=100000个字符串,总长度<=100000,问每个字符串有多少子串至少出现在n个串中的m个。 方法一:(未写)串在一起,后缀数组搞出来,然后height数组--排名相邻两个后缀的lcp搞出来,然后可能产生贡献的就是一段连续的height。对这段连续的height,如果有区间[L,R],满足R 阅读全文
posted @ 2017-12-06 19:51 Blue233333 阅读(285) 评论(0) 推荐(0)
摘要: n<=10000,n*2的格子玩扫雷,给下面一行的数字,问上面一行有几种方案。 ????我写的DP,貌似有更简洁的写法。。 1 #include<stdio.h> 2 #include<string.h> 3 #include<algorithm> 4 #include<stdlib.h> 5 // 阅读全文
posted @ 2017-12-05 13:10 Blue233333 阅读(175) 评论(0) 推荐(0)
摘要: 不要问我为什么,大家都啃CLJ论文过来的。 怎么会有这么强的人。。发明和引进这种算法的 诶谁看懂了CLJ的论文教我下QAQ我其实还不会的 Q:后缀树中所有节点深度和是多少? 阅读全文
posted @ 2017-12-04 22:12 Blue233333 阅读(179) 评论(0) 推荐(0)
摘要: n<=100000个带权区间,m<=100000个询问,每次问覆盖某个点的所有区间的权值的前K小的和,强制在线。 差分一下就变主席树了嘛。。然而调了半天。。 (若是此题入门可以看下其他人的博客) 1 #include<stdio.h> 2 #include<string.h> 3 #include< 阅读全文
posted @ 2017-12-03 21:17 Blue233333 阅读(134) 评论(0) 推荐(0)
摘要: n<=100000,m<=500000的图有点权边权,q<=500000个询问每次问从x出发经过不超过y的边权能到的点权第K大,加强版强制在线。 Emmmmmm有一个漂亮的方法来转化,就是对原图做MST,做的时候要连接两个点时不要直接连,新开一个点然后让这两个点连上这个点。 这样就把边权挂到树上了, 阅读全文
posted @ 2017-12-01 19:34 Blue233333 阅读(229) 评论(0) 推荐(0)
摘要: n<=100000的点权树,有m<=100000个询问,每次问两个点间的第k小点权,保证有解,强制在线。 主席上树啦!类似于之前的序列不带修改询问的前缀表示法,现在只要把前缀当成某点到根的信息即可。然后比如要问x点和y点,z为lca(x,y),w为z的爸爸,那么x,y,z,w四棵线段树一起跑即可。 阅读全文
posted @ 2017-11-30 07:14 Blue233333 阅读(168) 评论(0) 推荐(0)
摘要: n<=500000个数,m<=500000个询问,每次问区间里出现次数>(R-L+1)的数字是谁,没有输出0. 写了带修改发现不会不带修改了。。。。 不带修改的话,n个点,每个点表示一个前缀,每加入一个数时,主席树上只有logn个节点的信息,所以每次只用新建logn个节点,那前缀对应线段树里其他的信 阅读全文
posted @ 2017-11-29 20:55 Blue233333 阅读(184) 评论(0) 推荐(0)
上一页 1 ··· 15 16 17 18 19 20 21 22 23 ··· 31 下一页