随笔分类 -  算法 - 根号分治

摘要:怎么想都没想出来 $\log n$ 做法,那么这道题基本就是根号分治了. 题目描述中保证 $\sum k \leqslant 10^5$,然后 $k$ 在每次询问中又是相同的,那么就考虑对 $k$ 根号分治. 先对 $s$ 建立后缀自动机,然后把倍增数组求出来. 我们设块的大小为 $B$,那么当 $ 阅读全文
posted @ 2020-07-20 18:41 EM-LGH 阅读(184) 评论(0) 推荐(0)
摘要:好神仙的数据结构题呀! code: #include <cstdio> #include <cstring> #include <vector> #include <cmath> #include <algorithm> #define BL 250 #define N 100006 #define 阅读全文
posted @ 2020-03-06 15:47 EM-LGH 阅读(144) 评论(0) 推荐(0)
摘要:如果 $k$ 值确定的话,我们直接来一个 $O(n)$ 的贪心就行. 那么我们就将 $k$ 分为大于 $B$ 和小于 $B$ 两部分处理. 对于小于 $B$ 的部分,暴力处理,复杂度为 $O(nB)$. 对于大于 $B$ 的部分,取值分别为 $[0,\frac{n}{B}]$ 且依次递减. 那么我们 阅读全文
posted @ 2020-03-04 21:00 EM-LGH 阅读(187) 评论(0) 推荐(0)
摘要:这道题的数据范围中有两个需要注意到的点: 1. 边都是由编号小的点连向编号大的点. 2. 总点数只有 $10^5$ 个. 所以我们可以考虑采取根号分治的做法: 对于点数大于 $\sqrt n$ 的部分,直接跑一个 $O(n)$ 的 DP. 对于点数小于 $\sqrt n$ 的部分,提前预处理. 这样 阅读全文
posted @ 2020-03-04 20:11 EM-LGH 阅读(265) 评论(0) 推荐(0)
摘要:题意: 给定序列 $a,m$ 次询问,每次询问给出 $t,k$. 求 $a_{t}+a_{t+k}+a_{t+2k}+.....a_{t+pk}$ 其中 $t+(p+1)k>n$ 题解: 这种跳步数问题可以用根号分治来解决: 对于 $k$ 比较大的询问直接暴力跳,而对于 $k$ 较小的部分就通过预处 阅读全文
posted @ 2019-10-09 16:44 EM-LGH 阅读(168) 评论(0) 推荐(0)
摘要:此题卡Dijkstra... Code: 阅读全文
posted @ 2019-09-19 10:44 EM-LGH 阅读(215) 评论(0) 推荐(0)