Loading

上一页 1 2 3 4 5 6 7 8 9 ··· 13 下一页
摘要: 2+ doors 贪心 位与位之间互不影响,因此考虑每个位进行考虑就行 因为是或的关系,先考虑 $0$ 的情况,如果出现 $0$,则两个数字的该位必然是 $0$ 如果是 $1$ 的情况,就考虑贪心,从第一个数字开始往后考虑: 如果另一个数字的当前位是 $0$,则将当前数字的当前位置为 $1$,剩下的 阅读全文
posted @ 2022-08-22 14:34 dgsvygd 阅读(111) 评论(0) 推荐(1) 编辑
摘要: Monoblock dp 先想想如何计算初始值 $dp[x]$ 表示以第 $x$ 个位置为 $r$,他的所有贡献 状态转移: 如果 $a_x = a_{x-1}$:$dp[x] = dp[x-1] + 1$,代表只增加了 $l = r$ 的区间值 如果 $a_x \ne a_{x-1}$:$dp[x 阅读全文
posted @ 2022-08-22 14:26 dgsvygd 阅读(69) 评论(0) 推荐(0) 编辑
摘要: Burenka and Traditions 贪心 由于代价是向上取整的,因此可以直接考虑成两种方式: 选择两个相邻的数,让他们同时异或上一个值 选择一个数字,让他变成 $0$ 由此可见,最多的次数就是,全部都选择操作 $2$,因此我们考虑让操作 $1$ 使得两个相邻的数字一样的情况尽量的多次出现, 阅读全文
posted @ 2022-08-22 14:01 dgsvygd 阅读(45) 评论(0) 推荐(0) 编辑
摘要: Plus and AND 贪心 从高位开始判断,判断每个数字当前位如果置为 $1$ 需要多少步,如果当前位原本就是 $1$,则不消耗,如果原本不是,则消耗低位后,需要将低位全部置 $0$ 然后排序,选消耗最少的 $k$ 个,如果满足其消耗小于 $m$,直接默认该为置为 $1$,并保留之前的修改和消耗 阅读全文
posted @ 2022-08-22 13:35 dgsvygd 阅读(59) 评论(0) 推荐(0) 编辑
摘要: Connections 思维 真没看出来 由于给的是强连通图,直接保留从 $1$ 开始深搜,保证 $1$ 能访问到其他所有点的,然后反向建图,保证所有点能够到达 $1$ #include <iostream> #include <cstdio> #include <algorithm> #inclu 阅读全文
posted @ 2022-08-21 21:51 dgsvygd 阅读(14) 评论(0) 推荐(0) 编辑
摘要: Frog Traveler dp + bfs 感觉又像搜索 从后往前进行状态转移,像 $bfs$ 一样保证当前搜索的是消耗次数最少的 状态转移因为是一个连续的区间,因此考虑当前能上升到的最大距离,只有能更新这个最大值,才进行状态转,保证每个位置只被访问一次 时间复杂度 $O(n)$ #include 阅读全文
posted @ 2022-08-19 23:50 dgsvygd 阅读(39) 评论(0) 推荐(0) 编辑
摘要: Preorder 树型 dp + 思维 $dp[i]$ 表示以 $i$ 为根的子树通过变换有多少种不同的先序遍历 状态转移方程: 当左右子树不同,两个子树交换位置之后,没有重复的出现:$dp[x] = dp[lson] * dp[rson] * 2$ 当左右子树相同时,两个子树交换位置后,会有相同的 阅读全文
posted @ 2022-08-19 23:50 dgsvygd 阅读(22) 评论(0) 推荐(0) 编辑
摘要: Capital City tarjan 缩点 缩点之后,找到 DAG 图中唯一一个出度为 $0$ 的点,如果有多个,说明不成立 #include <iostream> #include <cstdio> #include <algorithm> #include <stack> #include < 阅读全文
posted @ 2022-08-18 20:15 dgsvygd 阅读(29) 评论(0) 推荐(0) 编辑
摘要: Building a Fence dp 模拟? 维护好可摆放的区间即可,我用的区间是指当前位置可摆放的东西的下边界 区间下限:$l_i = max(l_{i+1} - k, h_i)$,表示尽量往下放,以及在地面之上 区间上限:$r_i = min(r_{i-1} - 1, h_i + k - 1) 阅读全文
posted @ 2022-08-18 10:48 dgsvygd 阅读(31) 评论(0) 推荐(0) 编辑
摘要: New Year's Puzzle 模拟 如果尝试从左到右放,就会发现其实放的基本是唯一的,因此考虑直接模拟就好了 针对当前列,分成三种状态: 状态 $0$:上下都不能放 状态 $1$:下面不能放 状态 $2$:上面不能放、 状态 $3$:上下都能放 考虑不同的状态相互遇到会变成另一个什么状态,即可 阅读全文
posted @ 2022-08-16 20:49 dgsvygd 阅读(22) 评论(0) 推荐(0) 编辑
摘要: LCA 基本定义:最近公共祖先简称 LCA(Lowest Common Ancestor)。两个结点的最近公共祖先,就是这两个点的公共祖先里面,离根最远的那个。 简单来讲,就是两个点到根的路径上,深度最深的重合点 常用的求解方法: 朴素方法 每次选择深度较深的那个结点,往上走一步,直到两个结点重合, 阅读全文
posted @ 2022-08-14 23:41 dgsvygd 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 染色 树链剖分 考虑如果在数列上的话,就是用线段树处理这个问题 线段树记录答案,并且处理区间和并的问题:如果区间合并的地方颜色相同,则加和后的答案要减一 因此维护所有线段树区间两端的颜色 染色的过程可以加入 $lazytag$ 然后再在树上跑一个树链剖分 时间复杂度为 $O(nlog^2n)$ #i 阅读全文
posted @ 2022-08-14 23:11 dgsvygd 阅读(19) 评论(0) 推荐(0) 编辑
摘要: Passable Paths LCA 在树上找到形容一条链,只用找到链的两个端点即可,因此这题的初始想法就是找端点 第一个端点:深度最深的地方 第二个端点:离第一个端点最远的那个点 找到两个端点之后,就判断一下其他点是否在这个链上:最快的方法就是判断两个端点到这个点 p 的距离之和,是不是和链长相等 阅读全文
posted @ 2022-08-14 20:05 dgsvygd 阅读(30) 评论(0) 推荐(0) 编辑
摘要: Cow Ski Area 把一个图变成一个强连通图 $tarjan$ 考虑 $tarjan$ 缩点之后形成若干个 $DAG$ 图,接下来就是将这若干个 $DAG$ 图连接起来 不难发现我们先让所有的图首尾相连(入度为 $0$ 和 出度为 $0$),使得所有的 $DAG$ 图可以互相到达(环) 接着如 阅读全文
posted @ 2022-08-12 15:20 dgsvygd 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 可达性 $tarjan$ 缩点 如果是 $DAG$ 图,则答案就是入度为 $0$ 的强连通分量中字典序最小的点组成的点集 因此直接缩点,然后维护每个强连通分量的最小字典序的点 #include <iostream> #include <cstdio> #include <stack> #includ 阅读全文
posted @ 2022-08-12 15:13 dgsvygd 阅读(17) 评论(0) 推荐(0) 编辑
摘要: Checkposts $tarjan$ 如果是 $DAG$ 图,则只用找入度为 $0$ 的点即可 因此考虑缩点后,找所有入度为 $0$ 的点 最小值则为,缩点后所有入度为 $0$ 的强连通块中,每个都拿一个代价最小的点 方案数为,在上述的强连通块,记录一下代价最小的点有多少个,全部相乘即可 因此 $ 阅读全文
posted @ 2022-08-12 14:21 dgsvygd 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 上白泽慧音 找一个点数量最大,且字典序最小的强连通块 $tarjan$ $tarjan$ 在跑的时候顺便维护一个连通块的数量 #include <iostream> #include <cstdio> #include <algorithm> #include <vector> #include < 阅读全文
posted @ 2022-08-12 14:14 dgsvygd 阅读(38) 评论(0) 推荐(0) 编辑
摘要: Coin Collector 典中典题了属于是 $tarjan$ 缩点 + 记忆化搜索 或 $dp$ 如果是 $DAG$ 图,直接记忆化搜索或者 $dp$ 跑一边 考虑图中有强连通分量,先缩点后记忆化搜索 每个点的硬币最大值 $dp$ 为,其他能到该点的 $dp$ 最大值转移过来 #include 阅读全文
posted @ 2022-08-12 14:10 dgsvygd 阅读(98) 评论(0) 推荐(0) 编辑
摘要: Going from u to v or from v to u? 判断是不是弱连通图 $tarjan$ 缩点 + 拓扑 弱联通说明必须要有唯一的拓扑序,也就是拓扑的队列里始终只有一个 拓扑需要 $DAG$ 图,因此考虑 $tarjan$ 缩点后跑拓扑 #include <iostream> #in 阅读全文
posted @ 2022-08-12 14:06 dgsvygd 阅读(17) 评论(0) 推荐(0) 编辑
摘要: True Friends 判断所有强连通块的数量 tarjan 模板 #include <iostream> #include <cstdio> #include <algorithm> #include <stack> #include <vector> #include <string> usi 阅读全文
posted @ 2022-08-12 14:00 dgsvygd 阅读(32) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 13 下一页