摘要:AFO 阅读全文
posted @ 2019-07-19 12:14 HocRiser 阅读 (254) 评论 (3) 编辑
摘要:A:暴力。 1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<algorithm> 5 #define rep(i,l,r) for (int i=(l); i<=(r); i++) 6 typedef lo 阅读全文
posted @ 2019-08-22 12:32 HocRiser 阅读 (68) 评论 (0) 编辑
摘要:A.模拟。 1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<algorithm> 5 #define rep(i,l,r) for (int i=(l); i<=(r); i++) 6 typedef lo 阅读全文
posted @ 2019-08-18 14:14 HocRiser 阅读 (50) 评论 (0) 编辑
摘要:1001 Polynomial:若第一个多项式的次数大于第二个,就是1/0,若小于就是0/1,若等于就是第一个多项式最高次项系数/第二个多项式最高次项系数。 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #define 阅读全文
posted @ 2019-08-18 14:05 HocRiser 阅读 (151) 评论 (0) 编辑
摘要:本题可以用的方法很多,除去以下三种我所知道的就还有至少三种。 方法一:类似线段树优化建图,将一个平面等分成四份(若只有一行或一列则等分成两份),然后跑Dijkstra即可。建树是$O(n\log n)$的,单次连边是$O(n\log^2 n)$的。 1 #include<queue> 2 #incl 阅读全文
posted @ 2019-07-30 20:37 HocRiser 阅读 (99) 评论 (0) 编辑
摘要:AFO 阅读全文
posted @ 2019-07-19 12:14 HocRiser 阅读 (254) 评论 (3) 编辑
摘要:树剖裸题,当然LCT也可以。 树剖: LCT: 阅读全文
posted @ 2019-07-12 19:07 HocRiser 阅读 (30) 评论 (0) 编辑
摘要:显然可以通过后缀数组快速找到询问的两个串分别是什么,然后正反各建一个后缀数组来求两个串的LCP和LCS即可。 阅读全文
posted @ 2019-07-12 16:19 HocRiser 阅读 (20) 评论 (0) 编辑
摘要:回文树(也就是回文自动机)实际上是奇偶两棵树,每一个节点代表一个本质不同的回文子串(一棵树上的串长度全部是奇数,另一棵全部是偶数),原串中每一个本质不同的回文子串都在树上出现一次且仅一次。 一个节点的fail指针指向它的最长回文后缀(不包括自身,所有空fail均连向1)。归纳容易证明,当在原串末尾新 阅读全文
posted @ 2019-07-09 17:37 HocRiser 阅读 (77) 评论 (0) 编辑
摘要:首先枚举回文中心,然后显然中心两边要尽量扩展作为middle,这个用manacher实现。 然后注意到suffix的结尾位置是固定的(串尾),那么预处理出以每个位置结尾的串与原串后缀至多能匹配多长,然后再作个前缀和在枚举回文中心时尝试更新答案即可。这一部分将原串反过来用KMP实现,注意|suffix 阅读全文
posted @ 2019-06-29 18:39 HocRiser 阅读 (30) 评论 (0) 编辑
摘要:T1.桥梁(bridges/restriction) Subtask1:暴力,$O(n^2)$。 1 #include<cstdio> 2 #include<algorithm> 3 #define rep(i,l,r) for (int i=(l); i<=(r); i++) 4 #define 阅读全文
posted @ 2019-06-26 19:40 HocRiser 阅读 (107) 评论 (0) 编辑