Loading

上一页 1 2 3 4 5 6 7 ··· 13 下一页
摘要: 最近真的被很多事情烦死了,实习难,就业难,考研难,还不知道大四要不要继续打好(现在热情已经损耗的差不多了,想退役了),队友又摆烂(等退役小文章再吐槽),学校课程又乱七八糟(实验课什么入门都没有直接就地狱模式,那老师啥都不讲) 今天的烦躁居然连喝奶茶都压制不下去了,要是十年前的我知道现在是这么一个焦虑 阅读全文
posted @ 2022-09-22 18:26 dgsvygd 阅读(56) 评论(1) 推荐(2) 编辑
摘要: Denouncing Mafia 贪心 + 线段树 + $dfs$ 序 || 贪心 + 长链剖分 考虑贪心地每次拿能染色最多的点,每拿走一个点,都会影响其他点的值,如果一个点被染色,则他子树的所有点的贡献值都会 - 1,因此考虑用线段树 + $dfs$ 序的方式,对树上进行区间修改,每次询问所有点的 阅读全文
posted @ 2022-09-22 14:47 dgsvygd 阅读(32) 评论(0) 推荐(0) 编辑
摘要: Tree Requests 判断 $V_i$ 的子树中,深度为 $h_i$ 的结点上所带有的字符,能否组成一个回文串 启发式合并 维护所有深度上不同字符的数量,并且维护其奇数字符出现的次数 如果若干个字符能组成一个回文串,必然有: 偶数个字符,且不出现奇数次数的字符 奇数个字符,只能出现一个奇数次数 阅读全文
posted @ 2022-09-19 00:32 dgsvygd 阅读(33) 评论(0) 推荐(0) 编辑
摘要: Tree and Queries 询问 $V_j$ 的子树中,有多少种颜色出现了 $K_j$ 次 启发式合并 最直接的,树上启发式合并的同时维护颜色出现的次数,然后再拿一个数组记录一下出现了 $i$ 次的颜色数量,储存在 $sum_i$ 对于这个 $sum$ 的维护,一开始觉得直接套个树状数组上去, 阅读全文
posted @ 2022-09-19 00:26 dgsvygd 阅读(13) 评论(0) 推荐(0) 编辑
摘要: Blood Cousins Return 启发式合并 在跑启发式合并的同时,对每个深度都维护一个 $set$,就可以自动去重并计算有多少种不同的字符串 #include <iostream> #include <cstdio> #include <algorithm> #include <vecto 阅读全文
posted @ 2022-09-19 00:14 dgsvygd 阅读(30) 评论(0) 推荐(0) 编辑
摘要: Blood Cousins 树上启发式合并 || $dfs$ 序 + 二分 树上启发式合并就直接根据深度来合并起来就好了,答案就是问的那个点的 $k$ 级祖先下,深度与问的那个点的儿子数量 - 1 对深度进行一个启发式合并就好了 好像还可以长链剖分? 注意该题是森林 #include <iostre 阅读全文
posted @ 2022-09-17 23:25 dgsvygd 阅读(31) 评论(0) 推荐(0) 编辑
摘要: Unique Username 模拟 搜索 全排列模拟,直接搜索 #include <iostream> #include <cstdio> #include <map> #include <string> using namespace std; const int maxn = 20; map< 阅读全文
posted @ 2022-09-14 14:13 dgsvygd 阅读(43) 评论(0) 推荐(0) 编辑
摘要: Best Concatenation 贪心 - 相邻交换 考虑两个相邻位置的元素,如果进行交换,会对答案造成怎样的影响 假设现有一个排列,我们拿出其中两个相邻项 $A$ 和 $B$ 考虑 $... + A + B + ...$ 和 $... + B + A + ...$ 的顺序对答案造成了什么影响 阅读全文
posted @ 2022-09-14 13:41 dgsvygd 阅读(57) 评论(2) 推荐(0) 编辑
摘要: Exactly K Steps 树的直径 + 离线 考虑离每个点最远的点是哪个点,根据树的直径相关内容,距离该点最远的点一定是直径两个端点之一,理解上的话可以考虑画一个图,直径上的所有点在一条直线上,然后再花分支,如果其中一个点的最远距离的点,不是直径上两个端点的话,显然会有新的更长的直径产生 因为 阅读全文
posted @ 2022-09-05 18:01 dgsvygd 阅读(44) 评论(0) 推荐(0) 编辑
摘要: Erasing Vertices 2 二分 || 贪心 二分的做法就二分答案,然后检查一下能否删除,像拓扑一下跑一下就行 #include <iostream> #include <cstdio> #include <algorithm> #include <vector> #include <qu 阅读全文
posted @ 2022-09-03 23:33 dgsvygd 阅读(97) 评论(0) 推荐(1) 编辑
摘要: Madoka and The Corruption Scheme 组合数 + 思维 + 贪心 首先要思考一开始要如何摆放才是最优秀的 按照完全二叉树(根就是最后赢的那个),给所有的点赋予权值,代表需要转换多少条边,才能使得这个点的数字被选上 显然假设当前点的权值为 $x$,该点的其中一个节点权值必然 阅读全文
posted @ 2022-09-03 17:14 dgsvygd 阅读(122) 评论(0) 推荐(1) 编辑
摘要: Madoka and Formal Statement 思维 如果合法,说明 $a_i \le b_i$,因此也可以认为 $b_i$ 就是 $a_i$ 最后能变成的最大值 根据题意操作,只有 $a_i \le a_{i+1}$ 的情况,才能使 $a_i + 1$,因此 $a_i$ 的理论最大值应该是 阅读全文
posted @ 2022-09-03 01:25 dgsvygd 阅读(225) 评论(0) 推荐(0) 编辑
摘要: Madoka and Underground Competitions 构造 在一行里,如果选定了其中一个位置是 $X$,接下来就直接往左和往右每 $k$ 个放置一个 $X$ 就行了 每一行的初始位置根据一开始的那个 $X$,斜着一个方向铺满,即可做到每一行都存在一个 $X$ | . | X | . 阅读全文
posted @ 2022-09-03 01:16 dgsvygd 阅读(155) 评论(0) 推荐(0) 编辑
摘要: Madoka and Strange Thoughts 唯一分解定理 $$ gcd(a, b) = p_1^{min(ak_1, bk_1)} * p_2^{min(ak_2, bk_2)}... $$ $$ lcm(a, b) = p_1^{max(ak_1, bk_1)} * p_2^{max( 阅读全文
posted @ 2022-09-03 01:00 dgsvygd 阅读(297) 评论(0) 推荐(1) 编辑
摘要: Maximum AND 贪心 从高位开始,尽可能地让 $a$ 中该位为 $0$ 的 和 $b$ 中该位为 $1$ 的配对在一起,换句话说,可以让 $a$ 由小到大排序,$b$ 由大到小排序 如果当前位最终是 $1$,则继续该过程 如果当前位最终是 $0$,则说明失配,考虑将这一位全部置为 $1$ ( 阅读全文
posted @ 2022-09-02 14:24 dgsvygd 阅读(32) 评论(0) 推荐(0) 编辑
摘要: Plus and AND 贪心 从高位开始逐位枚举,如果当前位能够在 $k$ 的代价内将所有数字都变成 $1$,则认为结果的当前位是 $1$,如果凑这一位利用了低位的 $1$,则要将其全部置为 $0$ 重复这个过程 #include <iostream> #include <cstdio> #inc 阅读全文
posted @ 2022-09-02 14:15 dgsvygd 阅读(22) 评论(0) 推荐(0) 编辑
摘要: 【模板】边双连通分量 边双的数量 tarjan 割边 出现一个桥就会把分割出一个连通块,因此边双的数量就是 桥的数量 + 原本块的数量 #include <iostream> #include <cstdio> #include <algorithm> using namespace std; co 阅读全文
posted @ 2022-09-02 10:18 dgsvygd 阅读(31) 评论(0) 推荐(0) 编辑
摘要: Hedge Mazes 判断两点之间是不是只有唯一一条简单路径 tarjan 割边 如果两点之间仅有一条简单路径,说明如果将路径上的一条边割掉,则两点之间不连通,换句话说,这条最短路径上的所有边都是割边 因此考虑找出所有的割边,用割边来跑一次并查集 #include <iostream> #incl 阅读全文
posted @ 2022-09-02 09:53 dgsvygd 阅读(135) 评论(0) 推荐(0) 编辑
摘要: Caocao's Bridges tarjan 割边 直接跑权值最小割点 坑: 如果图本身不连通,则输出 $0$ 如果图连通,且最小割边为 $0$,应该输出 $1$(至少有一个人去炸) #include <iostream> #include <cstdio> #include <algorithm 阅读全文
posted @ 2022-09-02 09:51 dgsvygd 阅读(12) 评论(0) 推荐(0) 编辑
摘要: King Graffs Defense tarjan 割边 显然如果是割边的话,边两边的边双连通分量就不能连通 因此考虑 $dfs$ 搜索树中,计算出所有边双连通分量的大小,然后每个边双连通分量与其他点的乘积之和,就是所有答案情况的 $\frac{1}{2}$ 总情况数就是 $\frac{n*(n- 阅读全文
posted @ 2022-08-31 17:04 dgsvygd 阅读(75) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 13 下一页