Loading

上一页 1 2 3 4 5 6 7 8 ··· 13 下一页
摘要: Untangling Chain 构造 显然对于一条线段来说,走到头只有左右两边可以选择,换句话说,第一次是横着走,第二次是竖着走,因此可以构造一个走法,让他每次都突破自身走过路径的四个边(矩形),使得每次走到头的时候,他的左右两边必然不存在直线 构造的合法性: 每次只突破长度 $1$,因此对于横向 阅读全文
posted @ 2022-08-31 09:38 dgsvygd 阅读(18) 评论(0) 推荐(0) 编辑
摘要: Even-Odd XOR 构造 这题对于数字大小的要求非常宽松,意味着会有大量的高位不会被使用到 考虑对于任意的 $a$, $b$, 如何异或上一些值,使得 $a$, $b$ 相等,显然直接异或上 $a \oplus b$ 就可以让其相等, 但是 $a \oplus b$ 可能之前用过,于是考虑利用 阅读全文
posted @ 2022-08-31 08:58 dgsvygd 阅读(149) 评论(0) 推荐(1) 编辑
摘要: Counting Rectangles 思维 把所有的矩形左上角都叠在一起,就会发现是一个二维前缀和的求解问题:$\sum_{i=h_s+1}^{h_b-1} \sum_{j=w_s+1}^{w_b-1} (ijcnt_{ij})$ 这个显然就是一个二维前缀和的问题,直接算就好了 #include 阅读全文
posted @ 2022-08-31 08:48 dgsvygd 阅读(154) 评论(0) 推荐(1) 编辑
摘要: Slot Machines 求字符串后缀的最小循环节(可截断) $kmp$ $kmp$ 只能在 $O(n)$ 预处理后 $O(1)$ 询问最小循环节,因此考虑直接把数组反转,然后询问即可 注意不可以把所有数字省略 #include <iostream> #include <cstdio> #incl 阅读全文
posted @ 2022-08-30 16:29 dgsvygd 阅读(30) 评论(0) 推荐(0) 编辑
摘要: How Many to Be Happy? 最小割 因为是最小生成树,因此可以考虑对于一条边来说,他的左右两端的点视为处于两个不同的集合,然后只通过该边进行连接,这样最小生成树就必然会利用这条边 比该边大的边显然不用考虑,就考虑比该边边权小的边,然后进行最小割,边流量为 $1$(分割成两个集合,且割 阅读全文
posted @ 2022-08-30 16:25 dgsvygd 阅读(21) 评论(0) 推荐(0) 编辑
摘要: Philosopher's Walk 递归分治 判断一下当前走的位置是属于 $4$ 个块中的第几个块,然后递归计算一下在边长变小一倍后,他应该所处的位置,然后再对原位置进行旋转或平移的操作 #include <iostream> #include <cstdio> #include <vector> 阅读全文
posted @ 2022-08-30 16:17 dgsvygd 阅读(21) 评论(0) 推荐(0) 编辑
摘要: Anya's gifts 将数字分成两个集合,使得两个集合的异或和之和最大 线性基 因为必然是要分成两个部分,所以一个数位出现了奇数次 $1$,不管怎么分,必然能变成 $1+0$ 的情况 所以只考虑偶数次的数位,让一个集合尽可能的大(凑 $1$ ),则另外一个集合的相同数位也会是 $1$ 因此就是对 阅读全文
posted @ 2022-08-30 16:02 dgsvygd 阅读(109) 评论(0) 推荐(0) 编辑
摘要: Candies median 二分 直接二分答案,每次 $check$ 的时候就遍历一次 $k$ 算前缀和就好了 这题太具欺骗性了,之前一直以为是什么线段树,结果常数真的大 #include <iostream> #include <cstdio> #include <vector> using n 阅读全文
posted @ 2022-08-30 14:42 dgsvygd 阅读(50) 评论(0) 推荐(0) 编辑
摘要: Erudite of words 组合数学 + 容斥 定义 $F_i$:表示由 $i$ 个字母组成的长度为 $n$ 的单词数(每个字母必须在单词中出现) 显然答案就是 $F_k * C_{m}^{k}$ 关于 $F_i$ 的递推式: $$ F_i = i^n - \sum_{j=1}^{k-1}(C 阅读全文
posted @ 2022-08-28 22:44 dgsvygd 阅读(90) 评论(0) 推荐(1) 编辑
摘要: Froginald the frog 矩阵快速幂 如果没有分隔的话,这就是一个矩阵快速幂求斐波那契的问题 因为有分隔,因此考虑他们分成若干个块,每个块的方案数之积就是答案,显然分隔的长度如果大于 $1$,则答案为 $0$ 有点小卡常,所以如果是比较小的斐波那契询问,直接打表 或者是加个记忆化 #in 阅读全文
posted @ 2022-08-28 19:37 dgsvygd 阅读(117) 评论(0) 推荐(1) 编辑
摘要: Different Pass a Ports 矩阵快速幂 模板 图的邻接矩阵的 $k$ 次幂就是从图上所有点走 $k$ 步的方案数 #include <iostream> #include <cstdio> using namespace std; typedef long long ll; con 阅读全文
posted @ 2022-08-28 19:33 dgsvygd 阅读(87) 评论(0) 推荐(0) 编辑
摘要: Building 5G antennas dfs 剪枝 要字典序最小,显然第一个点就是 $1$,后面考虑走 $k$ 步后能到达的点集中选一个字典序最小的,重复该过程 考虑 $set[i][j]$ 表示第 $i$ 号点当前能走 $j$ 步所包含的点的集合,我们可以发现对于相同的点,如果 $j_1 > 阅读全文
posted @ 2022-08-28 19:24 dgsvygd 阅读(155) 评论(0) 推荐(0) 编辑
摘要: Critical Edges tarjan 割边模板 #include <iostream> #include <cstdio> #include <algorithm> #include <vector> using namespace std; #define pii pair<int, int 阅读全文
posted @ 2022-08-26 23:33 dgsvygd 阅读(29) 评论(0) 推荐(0) 编辑
摘要: 嗅探器 tarjan 割点 考虑以 $a$ 作为根进行一次 $tarjan$ 的搜索,会发现只有到 $b$ 的路径上的割点才有可能是最终的答案 因此考虑一边标记这个路径,一边在这个路径上找割点即可 #include <iostream> #include <cstdio> #include <alg 阅读全文
posted @ 2022-08-26 23:31 dgsvygd 阅读(19) 评论(0) 推荐(0) 编辑
摘要: Electricity 计算割去某个点后,最大的连通块数量 tarjan 割点 跑一次 $tarjan$ 记录一下每个点删去后会产生多少个新的连通块,相当于找 $low[nex] \ge dfn[now]$ 的数量 如果为根节点,那么多出来的连通块数量要减一,因为本身没有父节点方向的连通块 #inc 阅读全文
posted @ 2022-08-25 22:59 dgsvygd 阅读(22) 评论(0) 推荐(0) 编辑
摘要: 【模板】割点(割顶) tarjan 学了一下割点,发现就是找 $low[nex] \ge dfn[now]$ 的点,同时根的话要求有两个分支才能作为割点 搜索的时候如果 $nex$ 没有被访问过,则直接继续搜,如果访问过,则尝试通过 $dfn[nex]$ 来松弛自己的 $low[now]$,因为只考 阅读全文
posted @ 2022-08-25 22:53 dgsvygd 阅读(17) 评论(0) 推荐(0) 编辑
摘要: Mr. Kitayuta's Technology tarjan + 思维 先缩点,然后考虑如何建边 如果其中一个 $DAG$ 图中出现一个缩点后大小大于 $2$ 的连通块(环),则考虑直接将这个 $DAG$ 图变成一个环,代价显然都是相同的,即点的数量 因此延伸,考虑多个缩点前都有环的 $DAG$ 阅读全文
posted @ 2022-08-24 23:14 dgsvygd 阅读(34) 评论(0) 推荐(0) 编辑
摘要: Manhattan Cafe dp 前缀和优化 很容易想到 $dp$ 的状态 $dp[i][j][k]$ 表示前 $i$ 个点,$r_x$ 与 $p_x$ 的差值和为 $j$,$r_x$ 与 $q_x$ 的差值和为 $k$ 这样的话直接枚举第 $i$ 组点中,我们取的点的位置,能够做到 $O(D)$ 阅读全文
posted @ 2022-08-23 23:45 dgsvygd 阅读(114) 评论(2) 推荐(1) 编辑
摘要: 最大半连通子图 tarjan 缩点后计算弱连通图,相当于 $DAG$ 图中点最多的路径,计算最大弱连通子图的时候就检查每个子节点的最长路径数量 注意该题的答案计算与边有关,要去重边 #include <iostream> #include <cstdio> #include <vector> #in 阅读全文
posted @ 2022-08-23 23:26 dgsvygd 阅读(17) 评论(0) 推荐(0) 编辑
摘要: Warp dp 状态优化 一开始想到的状态为:$dp[i][x][y]$,第 $i$ 步走到 $(x,y)$ 的方案数,但是发现状态转移非常难写,原因是坐标计算非常大 后来可以优化一下 $dp$ 的状态:$dp[i][j][k]$ 表示第 $1,2,3$ 个方向走了 $i,j,k$ 步 的方案数 这 阅读全文
posted @ 2022-08-23 12:51 dgsvygd 阅读(43) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 ··· 13 下一页