摘要: 初赛一: 1001 Drink:$\max\left\{\left\lceil\frac{m}{x}\right\rceil\cdot y\right\}$ 1 #include<cstdio> 2 #include<algorithm> 3 #define rep(i, l, r) for (in 阅读全文
posted @ 2020-07-30 19:40 HocRiser 阅读(554) 评论(0) 推荐(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-22 12:32 HocRiser 阅读(462) 评论(0) 推荐(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 阅读(269) 评论(0) 推荐(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 阅读(654) 评论(0) 推荐(0) 编辑
摘要: 本题可以用的方法很多,除去以下三种我所知道的就还有至少三种。 方法一:类似线段树优化建图,将一个平面等分成四份(若只有一行或一列则等分成两份),然后跑Dijkstra即可。建树是$O(n\log n)$的,单次连边是$O(n\log^2 n)$的。 1 #include<queue> 2 #incl 阅读全文
posted @ 2019-07-30 20:37 HocRiser 阅读(562) 评论(0) 推荐(0) 编辑
摘要: 树剖裸题,当然LCT也可以。 树剖: LCT: 阅读全文
posted @ 2019-07-12 19:07 HocRiser 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 显然可以通过后缀数组快速找到询问的两个串分别是什么,然后正反各建一个后缀数组来求两个串的LCP和LCS即可。 阅读全文
posted @ 2019-07-12 16:19 HocRiser 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 回文树(也就是回文自动机)实际上是奇偶两棵树,每一个节点代表一个本质不同的回文子串(一棵树上的串长度全部是奇数,另一棵全部是偶数),原串中每一个本质不同的回文子串都在树上出现一次且仅一次。 一个节点的fail指针指向它的最长回文后缀(不包括自身,所有空fail均连向1)。归纳容易证明,当在原串末尾新 阅读全文
posted @ 2019-07-09 17:37 HocRiser 阅读(472) 评论(0) 推荐(0) 编辑
摘要: 首先枚举回文中心,然后显然中心两边要尽量扩展作为middle,这个用manacher实现。 然后注意到suffix的结尾位置是固定的(串尾),那么预处理出以每个位置结尾的串与原串后缀至多能匹配多长,然后再作个前缀和在枚举回文中心时尝试更新答案即可。这一部分将原串反过来用KMP实现,注意|suffix 阅读全文
posted @ 2019-06-29 18:39 HocRiser 阅读(506) 评论(0) 推荐(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 阅读(476) 评论(0) 推荐(1) 编辑