Loading

上一页 1 2 3 4 5 6 7 8 9 10 ··· 13 下一页
摘要: Planets and Kingdoms 找出所有的点所属的强连通块编号 tarjan 模板 #include <iostream> #include <vector> #include <algorithm> #include <stack> using namespace std; const 阅读全文
posted @ 2022-08-12 13:58 dgsvygd 阅读(47) 评论(0) 推荐(0) 编辑
摘要: Flight Routes Check 判断是不是一个强连通图,如果不是,就找出不能到达的单程 tarjan 模板 判断不能到达的,直接从 $1$ 开始走一次搜索,如果与 $1$ 不同强连通块上的点,且 $1$ 能够到达那个点,显然答案就是从那个点到 $1$ 记得考虑整个图不连通的情况 #inclu 阅读全文
posted @ 2022-08-12 13:53 dgsvygd 阅读(92) 评论(0) 推荐(0) 编辑
摘要: I Hate Non-integer Number dp 如果能平均分,说明选了 $n$ 个数字,且其和在 $n$ 的意义下为 $0$ 因此考虑用 $dp$ 跑 $n$ 次,第 $i$ 次代表选择 $i$ 个数字 $dp[j][k][u]$ 代表前 $j$ 个数字,选择 $k$ 个数字,模意义下为 阅读全文
posted @ 2022-08-05 20:44 dgsvygd 阅读(68) 评论(0) 推荐(0) 编辑
摘要: Red and Blue Graph 思维 + 组合数 从点上想,一直找不到突破口,考虑从边的角度开始想 如果一条边两个端点都是红点,则说明这个边消耗红点的度数为 $2$ 如果一条边有一个端点是红点,则消耗红点度数为 $1$ 我们可以从这里开始突破,假设红色点的总度数为 $D$,两个端点都是红色的边 阅读全文
posted @ 2022-08-05 20:43 dgsvygd 阅读(69) 评论(0) 推荐(0) 编辑
摘要: Erase and Rotate 思维 + 单调栈 考虑只能删除的情况: 由于我们要求字典序最小,因此考虑在前 $k + 1$ 个数字中,我们选取最小的,然后把在他前面的所有数字全部删掉,每删掉一个都让 $k$ 减小 $1$ 然后保留那个最小的数字,往后继续上述过程 如果跑到最后仍有 $k > 0$ 阅读全文
posted @ 2022-08-05 20:41 dgsvygd 阅读(84) 评论(0) 推荐(0) 编辑
摘要: 传送门 A - World Cup 判断一下模 #include <iostream> #include <cstdio> #include <algorithm> #include <string> using namespace std; int main() { int x; cin >> x 阅读全文
posted @ 2022-08-05 20:37 dgsvygd 阅读(49) 评论(0) 推荐(0) 编辑
摘要: 传送门 A - Everyone Loves to Sleep 判断一下哪个时间离得最近,如果时间比当前时间还前的话,就加上一天的时间 #include <iostream> #include <vector> #include <array> using namespace std; int ma 阅读全文
posted @ 2022-08-02 10:31 dgsvygd 阅读(231) 评论(0) 推荐(3) 编辑
摘要: Checkers 思维 + 倍增LCA 隐式建图 考虑排序好的大小 $a$, $b$, $c$ 如果 $b - a = c - b$:只有两种情况转移,中间的往左边或者右边跳 如果 $b - a \ne c - b$:除了上述的情况,还有两边通过中间跳 第二种情况显然可以被认为是其上一个状态,通过中 阅读全文
posted @ 2022-08-01 16:23 dgsvygd 阅读(32) 评论(0) 推荐(0) 编辑
摘要: Network 树上差分 + 倍增LCA 树上添加一条边,会形成一个环,环上的边如果随便断开一条,仍然是属于同一个集合里 因此我们可以计算一下每一条边在多少个环内,最后再对每一条边进行判断,有多少种删除边的方法,计算的话可以用树上差分 $O(1)$ 解决 假设一条边处在 $x$ 个环内 $x = 0 阅读全文
posted @ 2022-07-31 16:27 dgsvygd 阅读(19) 评论(0) 推荐(0) 编辑
摘要: Distance Queries 树上距离板题 #include <iostream> #include <cstdio> #include <algorithm> #include <vector> using namespace std; const int maxn = 4e4 + 10; t 阅读全文
posted @ 2022-07-29 16:31 dgsvygd 阅读(23) 评论(0) 推荐(0) 编辑
摘要: 1-Trees and Queries LCA 倍增 + 思维 因为这里的路径不是简单路径,因此只要符合最短路径长度 不大于 $k$,且最短路径长度与 $k$ 的奇偶性相同,就必定有路径可以到(反复走一步,退一步) 加入一条边之后,可能会产生另一条路径的奇偶性与最短路径的奇偶性不同,因此我们考虑检测 阅读全文
posted @ 2022-07-29 15:44 dgsvygd 阅读(28) 评论(0) 推荐(0) 编辑
摘要: CRB and Tree 思维 路径异或一般考虑预处理从根到所有结点的前缀异或和,然后再进行计算:$f(u, v) = f(1, u) \oplus f(1, v)$ 初始化后将所有值用桶装起来,然后枚举每一个起点 $u$,然后终点就是 所询问的异或值 $s$ $\oplus$ $f(1, u)$ 阅读全文
posted @ 2022-07-28 22:38 dgsvygd 阅读(17) 评论(0) 推荐(0) 编辑
摘要: Tree Queries LCA 倍增 + 思维 所有的点到一条链的距离至多为 $1$,代表他们的父节点一定都在同一条链上 根据这个,找到最深的点,然后判断所有的点和它是不是在同一个链:它与其他点的 LCA 都是等于其他点 #include <iostream> #include <cstdio> 阅读全文
posted @ 2022-07-28 22:36 dgsvygd 阅读(26) 评论(0) 推荐(0) 编辑
摘要: Connections between cities LCA 倍增板子 求距离维护一个前缀和,$dis(u, v) = dis(rt, u) + dis(rt, v) - dis(rt, lca) * 2$ #include <iostream> #include <cstdio> #include 阅读全文
posted @ 2022-07-28 16:44 dgsvygd 阅读(30) 评论(0) 推荐(0) 编辑
摘要: Caesar's Legions 记忆化搜索 $dp[i][j][k]$ 表示当前有 $i$ 个步兵,$j$ 个骑兵,同时当前的兵种(第 $i+j$ 个)是步兵(0) 或 骑兵(1) 假设当前兵种是步兵,则可以进行记忆化搜索 $dp[i][j][0] = \sum_{x=1}^{min(k_2, j 阅读全文
posted @ 2022-07-27 21:06 dgsvygd 阅读(139) 评论(0) 推荐(1) 编辑
摘要: 传送门 A - Intersection 区间标记一下 #include <iostream> #include <vector> using namespace std; const int maxn = 110; int main() { vector<int>vis(110, 0); for( 阅读全文
posted @ 2022-07-24 16:20 dgsvygd 阅读(65) 评论(0) 推荐(0) 编辑
摘要: 传送门 最近没进入状态,好久没更新博客了,有点开摆的感觉,不过集训期间肯定会认认真真打的 多校的题目是真的难顶 A - Three Doors 模拟一下 #include <iostream> #include <cstdio> #include <algorithm> #include <vect 阅读全文
posted @ 2022-07-23 00:27 dgsvygd 阅读(41) 评论(0) 推荐(0) 编辑
摘要: 玩具装箱 dp + 斜率优化 $dp[i]$ 表示前 $i$ 个物品的最小代价,$pre[i]$ 代表前 $i$ 个物品的长度前缀和 设 $x = pre[i] - pre[j] + i - j - 1 - L$,容易看出状态转移方程: $$ dp[i] = \min_{j=1}^{i-1}(dp[ 阅读全文
posted @ 2022-07-22 21:55 dgsvygd 阅读(21) 评论(0) 推荐(0) 编辑
摘要: 股票交易 $dp$ + 单调队列优化 题目要求只能从第 $w- i - 1$ 天买入或卖出 $dp[i][j]$ 表示在第 $i$ 天且当天持有 $j$ 股的最大利润 有三种状态转移方式: 不买也不卖 $$ dp[i][j] = dp[i-1][j] $$ 从第 $w - 1 - i$ 天买入 $$ 阅读全文
posted @ 2022-07-22 21:03 dgsvygd 阅读(46) 评论(0) 推荐(0) 编辑
摘要: 瑰丽华尔兹 $dp$ + 单调队列优化 $dp[k][i][j]$ 表示在第 $k$ 次倾斜后 $x = i$ 且 $y = j$ 的位置上,能够滑动的最长距离,第一纬可以直接用滚动数组消除 显然每次倾斜都要对所有的状态进行更新,分四个方向进行更新,以向右滑动为例,有状态转移方程: $$ dp[i] 阅读全文
posted @ 2022-07-15 20:51 dgsvygd 阅读(30) 评论(0) 推荐(1) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 13 下一页