摘要: Luogu 1527 [国家集训队]矩阵乘法 题面 "Luogu 1527" 题解 ~~昨天学CDQ分治时做了一些题,但是因为题(wo)太(tai)水(lan)了(le)并没有整理~~ 学了一晚上的整体二分,拿这道模板题练练手qaq 整体二分的思想:对答案进行分治 每次处理一段答案区间时,二分一个m 阅读全文
posted @ 2018-12-25 22:26 nianheng 阅读(164) 评论(0) 推荐(0) 编辑
摘要: Codeforces Round 525 (Div. 2) ~~glhf~~ T1: 题意:求两个数$a,b$使$1n$ $n include include include include include include using namespace std; typedef long long 阅读全文
posted @ 2018-12-05 00:50 nianheng 阅读(242) 评论(3) 推荐(0) 编辑
摘要: 后缀树+虚树 做这道题我们需要知道这么几个东西 两个后缀的$lcp$就是其后缀树上的$lca$ 用一个字符串的反串建$sam$,其$parent$边就构成了原串的后缀树 这道题要求询问$k$个后缀两两之间$lcs$之和,转化到后缀树中就是问这$k$个点任意两个点$lca$处值相加 考虑树形$DP$, 阅读全文
posted @ 2018-12-04 21:02 nianheng 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 后缀自动机+线段树 先建出$sam$,统计一遍每个点的$right$集合大小$siz$,对于$siz=1$的点$x$,他所代表的子串只会出现一次,设$y=fa[x]$,则这个点代表的子串即为$(1...len[x] len[y],len[x])$,对于子串$(len[x] len[y],len[x] 阅读全文
posted @ 2018-12-04 20:49 nianheng 阅读(332) 评论(0) 推荐(0) 编辑
摘要: 计算几何大模板 ~~~cpp include include include include include include include using namespace std; const int maxn=1e5+100; const double Pi=3.1415926535897932 阅读全文
posted @ 2018-12-04 20:19 nianheng 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 虚树第一题 对于每次询问的点建立一棵虚树,然后在树上DP,一个点的答案就是这个点的父边切断的代价与所有儿子切断的代价去最小值,当然如果这个节点是资源点则必须切父边 注意在虚树上一条边的代价应该是中间所有边代价的最小值,在这道题里可以用到根节点边的最小值 建虚树的时候可以不去建那些在其他资源点下面的资 阅读全文
posted @ 2018-12-04 20:16 nianheng 阅读(115) 评论(0) 推荐(0) 编辑
摘要: $trie$树建广义后缀自动机: $dfs$遍历$trie$树,将树上的一个节点插入$sam$时,将他的$fa$在$sam$上所在的节点作为$last$ cpp include include include include include include using namespace std; 阅读全文
posted @ 2018-12-04 20:05 nianheng 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 广义后缀自动机+DP 对于作文库建出广义后缀自动机,广义自动机就是在每次添加一个字符串之前把$last=0$,然后正常添加就好了 对于每个询问串,预处理出每个位置$i$能向前匹配的最长长度$pp[i]$。 二分长度$L$,对于位置$i$,设往前匹配到$j$,满足$i pp[i] include in 阅读全文
posted @ 2018-12-04 19:59 nianheng 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 这道题应该是后缀数组的套路题啊,把单词连接起来,中间用没有出现过且互不相同的字符来分隔开,求一下$height$数组。 对于一个单词来说,设单词长$len$,所在的后缀为$i$,如果某后缀$j$满足$lcp(i,j)==len$,则$j$的前缀与这个单词相等。因为和$i$的$lcp$大小是从$i$向 阅读全文
posted @ 2018-11-30 09:32 nianheng 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 这题和在我长郡考试时的一道题思路差不多...考虑折半搜索,预处理左半边选的方案所产生的数量差值$x$以及价值差值$y$,把$y$扔到下标为$x$的set里面,然后在搜索右半边,每搜出一个状态,设他的数量差值为$a$,价值差值$b$,根据题意,要满足数量差值小于1,就要找左半边的状态来互补一下,很显然 阅读全文
posted @ 2018-11-29 22:38 nianheng 阅读(169) 评论(0) 推荐(0) 编辑
摘要: $\sum_{i include include include include include using namespace std; typedef long long ll; const int maxn=1e6+100; struct SA{ int sa[maxn],tp[maxn],r 阅读全文
posted @ 2018-11-29 22:19 nianheng 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 后缀数组[学习笔记] 这几天打算系统地学习一下字符串有关的东西... 今天看了看国家集训队的论文,做了几道板子题,感觉还是很有收获的,也算稍微把后缀数组的坑填了一下吧。 倍增算法求SA数组 利用倍增的思想来求后缀数组。 方法大概就是用基数排序,第一次按照每个后缀开头的字符为关键字,排一遍序,得到第一 阅读全文
posted @ 2018-11-28 21:44 nianheng 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 这题好像只要会用set/平衡树以及裸的$Excrt$就能A啊...然而当时我虽然看出是$Excrt$却并不会...今天又学了一遍$Excrt$,趁机把这个坑给填了吧 现预处理一下,找出每条龙用哪吧剑,把所有龙都砍$tmp$刀到负血。 设之后每条龙都砍了a刀,对于第$i$条龙,剑的攻击力为$w_i$, 阅读全文
posted @ 2018-11-27 22:55 nianheng 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 扩展中国剩余定理[学习笔记] 很久以前就学了$crt$和$Excrt$,但一直都没有真正理解。今天又重新学习了一下,尤其是推式子的过程,就整理一下吧 $Excrt$用来解决的问题: 求解关于a的同余方程组: $$ \begin{cases} a\equiv b_1\ (mod\ c_1)\\ a\e 阅读全文
posted @ 2018-11-27 20:08 nianheng 阅读(137) 评论(0) 推荐(1) 编辑
摘要: 几何题,二次函数,化一下式子吧 设二次函数$y=ax^2+bx$,对于一个线段$(x,y1)$,$(x,y2)$,与他相交的条件是$y1=y1$,可以化为变量为$a,b$的一次函数$b =xa+\frac{y1}{x}$,这可以表示成(a b)平面上的一个半平面... 如果一些线段的半平面交不为空, 阅读全文
posted @ 2018-11-24 22:40 nianheng 阅读(121) 评论(0) 推荐(0) 编辑