随笔分类 -  题解

上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 23 下一页
摘要:容易发现当 n≤1n \leq 1n≤1 时,由于 nnn 在 int 范围内,所以 p<31p < 31p<31。考虑从小到大枚举 ppp 并二分 np\sqrt [p]{n}pn​,判断是否是整数即可。 #include <iostream> #include <cstdio> #include 阅读全文
posted @ 2023-07-18 18:46 HappyBobb 阅读(23) 评论(0) 推荐(0)
摘要:这里介绍 Xor-Hash 的树哈希换根做法。 令 fif_ifi​ 为设树根为 111,以 iii 为根的子树的哈希值,有 fi=1+∑j∈sonuF(fj)f_i = 1 + \sum \limits_{j \in son_u} F(f_j)fi​=1+j∈sonu​∑​F(fj​),FFF 是 阅读全文
posted @ 2023-07-17 21:51 HappyBobb 阅读(12) 评论(0) 推荐(0)
摘要:如果是有根树,我们只需要从根开始树哈希即可。如果是无根树,一种方案是,依次选取每个点作为根,但复杂度无法接受。当然可以换根 DP,但有一个比较聪明的方法。 找到两棵树的重心进行树哈希。注意重心最多有两个,所以要进行两次树哈希,对哈希值进行对比。 令 fif_ifi​ 为以 iii 为根的子树的哈希值 阅读全文
posted @ 2023-07-17 17:39 HappyBobb 阅读(29) 评论(0) 推荐(0)
摘要:有趣的题。 首先第一个和第二个条件可以暴力枚举,复杂度 O(n2)O(n^2)O(n2)。 可以发现如果满足了第一个和第二个条件,这个矩阵其实就是一个无向完全图的邻接矩阵,ai,ja_{i,j}ai,j​ 表示 i↔ji \leftrightarrow ji↔j 的边权。 接着思考第三个。 我们发现 阅读全文
posted @ 2023-07-17 14:11 HappyBobb 阅读(9) 评论(0) 推荐(0)
摘要:考虑拆点,每个点对 (x,y)(x,y)(x,y) 拆成入点 uuu 和出点 vvv。连 x→cap=+∞,cost=0yx \xrightarrow{cap=+\infty,cost=0} yxcap=+∞,cost=0​y。如果这个地方有石头,再连一条 x→cap=1,cost=1yx \xri 阅读全文
posted @ 2023-07-15 17:07 HappyBobb 阅读(10) 评论(0) 推荐(0)
摘要:简单费用流。 考虑每个点 (x,y)(x,y)(x,y) 转化成 (x−1)×(p+1)+y+16(x-1) \times (p+1) + y+16(x−1)×(p+1)+y+16。加上 161616 是为了避免结果为负数或 000。 题目限制只能往上或往右,于是对于每个点 uuu,找到上边和右边的 阅读全文
posted @ 2023-07-13 19:03 HappyBobb 阅读(10) 评论(0) 推荐(0)
摘要:考虑每行一个点,每列一个点。源点 SSS 向每行连边,每列向汇点 TTT 连边,容量都是 111。 对于每个棋子,新开两个点,一个是行对应的点 xxx,另一个是列对应的 yyy。 发现其行可以在 [Ai,Ci][A_i,C_i][Ai​,Ci​] 中任取,列可在 [Bi,Di][B_i,D_i][B 阅读全文
posted @ 2023-07-13 18:52 HappyBobb 阅读(13) 评论(0) 推荐(0)
摘要:首先发现答案可以二分,考虑如何判定。 首先用最短路算法跑全源最短路预处理 di,jd_{i,j}di,j​ 表示 iii 到 jjj 最短路。用 Floyd 做复杂度是 O(n3)O(n^3)O(n3) 的,若使用 Dijkstra 算法则是 O(nmlog⁡m)O(nm \log m)O(nmlo 阅读全文
posted @ 2023-07-13 18:47 HappyBobb 阅读(13) 评论(0) 推荐(0)
摘要:莫队板子。若 iii 出现 cic_ici​ 次,我们能要求的是 ∑i∈N⌊ci2⌋\sum \limits_{i \in \mathbb{N}} \lfloor \frac{c_i}{2} \rfloori∈N∑​⌊2ci​​⌋。 简单莫队维护即可,复杂度 O(qn)O(q \sqrt n)O(q 阅读全文
posted @ 2023-07-13 13:27 HappyBobb 阅读(11) 评论(0) 推荐(0)
摘要:有趣的网络流。 首先,除了 222,所有质数都是奇数,所以只能被表示成两个奇偶性不同的数的和。所以我们先抛开 222 不谈。 如果抛开 222,意味着原序列没有 111。若是这样,我们可以直接最大流解决,具体是这样: 考虑对于 ai+aja_i+a_jai​+aj​ 为质数且 aia_iai​ 是奇 阅读全文
posted @ 2023-07-13 13:24 HappyBobb 阅读(9) 评论(0) 推荐(0)
摘要:首先可以二分答案,接着考虑如何写 check。 我们发现尽管我们二分了最大和最小的差,但我们仍然无法确定这个区间,这是因为最小值不固定。 由于 B≤20B \leq 20B≤20,所以我们可以枚举最小值,求出对应区间。也就是说,每头牛去的牛棚在 [i,i+x−1][i,i+x-1][i,i+x−1] 阅读全文
posted @ 2023-07-13 13:10 HappyBobb 阅读(10) 评论(0) 推荐(0)
摘要:首先可以发现可以二分答案。接着考虑如何 check。 假设二分当前距离最大值为 xxx,显然对于点对 (i,j)(i,j)(i,j),当 dis(i,j)≤xdis(i,j) \leq xdis(i,j)≤x 时,iii 的所有奶牛可以到 jjj 点避雨。可以最短路预处理 disdisdis。然而题 阅读全文
posted @ 2023-07-12 17:58 HappyBobb 阅读(8) 评论(0) 推荐(0)
摘要:考虑根号分治。 若 kkk 固定,怎么做? 容易发现我们可以从树的叶子节点开始往上走,每走到一条合法的链就拼起来,贪心即可,复杂度 O(n)O(n)O(n)。 此外,我们还发现,令 ansians_iansi​ 为 k=ik=ik=i 时的答案,那么由于每条链不相交,所以 ansi≤⌊nk⌋ans_ 阅读全文
posted @ 2023-07-10 11:41 HappyBobb 阅读(8) 评论(0) 推荐(0)
摘要:容易发现答案为 ∑i=1b[gcd⁡(i,n)=1]−∑i=1a−1[gcd⁡(i,n)=1]\sum \limits_{i=1}^b [\gcd(i,n)=1]-\sum \limits_{i=1}^{a-1} [\gcd(i,n)=1]i=1∑b​[gcd(i,n)=1]−i=1∑a−1​[gc 阅读全文
posted @ 2023-07-08 11:20 HappyBobb 阅读(19) 评论(0) 推荐(0)
摘要:有趣题。 容易发现答案可以二分,重点在于怎么写 check。 我们假设现在二分的是 xxx,我们要判断若对于每条边,只能经过 xxx 次,kkk 个点是否可以全部到达 111。容易发现这个东西可以转化为网络流,从源点 SSS 向 kkk 个特殊点连容量为 111 的边,原图上每条边的容量为 xxx。 阅读全文
posted @ 2023-07-07 19:16 HappyBobb 阅读(11) 评论(0) 推荐(0)
摘要:容易发现整个序列和的绝对值 ≤1014\leq 10^{14}≤1014,令其为 VVV。 那么当 k≠±1k \neq \pm 1k=±1 时,kkk 的非负整数幂只有 O(log⁡kV)=O(log⁡V)O(\log_k V) = O(\log V)O(logk​V)=O(logV) 个不同的 阅读全文
posted @ 2023-07-06 20:34 HappyBobb 阅读(15) 评论(0) 推荐(0)
摘要:考虑离线。 我们从小到大枚举 RRR,考虑令 sis_isi​ 为 l≤il \leq il≤i,且 r∈[l,R]r \in [l, R]r∈[l,R] 的答案。可以发现对于询问 l,rl,rl,r,答案即为 sr−sl−1s_r - s_{l-1}sr​−sl−1​。 接着我们考虑当 R←R+1 阅读全文
posted @ 2023-06-22 17:55 HappyBobb 阅读(16) 评论(0) 推荐(0)
摘要:容易发现的是,当左端点 lll 确定时,r∈[l,n]r \in [l,n]r∈[l,n],那么 gcd⁡i=lrai\gcd \limits_{i=l}^r a_ii=lgcdr​ai​ 的不同数量是 O(log⁡V)O(\log V)O(logV) 的级别。 原因是,每次 gcd⁡\gcdgcd 阅读全文
posted @ 2023-06-20 12:34 HappyBobb 阅读(11) 评论(0) 推荐(0)
摘要:由于 m≤5m \leq 5m≤5,所以非空子序列只有 2m−1≤312^m-1 \leq 312m−1≤31 个,直接全部找出来并且放在子序列自动机上跑一下就好了。然后值域很大,朴素的用 nxt 构建子序列自动机的复杂度为 O(nv)O(nv)O(nv),vvv 是值域。这样复杂度错误,所以 ve 阅读全文
posted @ 2023-06-20 09:52 HappyBobb 阅读(10) 评论(0) 推荐(0)
摘要:我们建立出序列自动机后,令 fx,y,zf_{x,y,z}fx,y,z​ 表示在三个子序列自动机分别到达 x,y,zx,y,zx,y,z 后,能往后走子序列的数量。 容易发现对于现在在 x,y,zx,y,zx,y,z 的三个点,我们只需要往外枚举 262626 个节点,并且记忆化即可。 #inclu 阅读全文
posted @ 2023-06-17 10:52 HappyBobb 阅读(20) 评论(0) 推荐(0)

上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 23 下一页