
杂题
TearNovice
欲登高而穷目,勿筑台于浮沙
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ABC202 E - Count Descendants题目解析
零简洁版题目: 给你一棵树,q次询问; 每次询问输入两个数,u,d; 要求计算出在树的第d层并且是节点u的子孙节点的节点个数 一、知识点 dfs序 二分 二、分析 通过题目可以容易地看出,要从树的第d层寻找合法答案,那么求节点所在层数可以用dfs/bfs求出 不好解决的地方在于如何快速确定在第d层的节点,有哪些的祖先是u 可以想到的方法是倍增去找,但对于本题来说显然不够高效 有一种更好的方法,就是维护每个节点进出的时间戳(即先序in后序out) 可以容易地想到,对于一对节点u,v,当u为v的祖先节点时,原创 2021-05-28 21:20:08 · 396 阅读 · 0 评论 -
Codeforces Round #646 (Div. 2) B. Subsequence Hate
题目链接 通过冷静分析,让其没有01交替子序列的方法就是一边都是0,另一边都是1 可以枚举01交界点,每次记录两边0,1数量,维护最小值即可 数据水,复杂度O(n2)O(n^2)O(n2)即可过 #include<bits/stdc++.h> using namespace std; char s[1005]; int main() { int _; scanf("%d",&_); while(_--) { scanf("%s",s);原创 2020-08-09 14:49:21 · 117 阅读 · 0 评论 -
Codeforces Round #656 (Div. 3) E. Directing Edges
题目传送门 比赛的时候没有想出来要怎么做,隐隐约约一种感觉,要是有向边不成环的话,就一定会是YES 但是具体没想到之后应该怎么去加边 赛后看cf题解用到了拓扑排序,当时也没明白他俩有什么关联 想了一段时间,加上手动画了一下图 发现对于拓扑排序的结果,如果添加顺序较后的节点到顺序较前的节点的有向边,必然会构成环 如果顺着排序顺序建边则不会构成环 所以解体只需按照以下步骤进行 存图时存两个图(一个只有有向边即‘1’,一个只有双向边即‘0’) 对有向图进行拓扑排序(若排序结果节点数少于n,则说明有环,输出NO)原创 2020-07-19 11:24:28 · 273 阅读 · 0 评论 -
P1119 灾后重建(Floyd的妙用)
luogu P1119 灾后重建 这道题考的是Floyd的妙用,也可以说是对Floyd内涵的考察 总所周知,Floyd是一个复杂度为O(n3)O(n^3)O(n3)的算法,也就是说在限时1s1s1s的情况下数据非常弱才会用到他 但是该算法的dp思想正是解题的关键 每当需要更新距离的时候,只需拿出用来充当松弛操作中转点的结点,进行一次松弛操作 就维护了一次最小距离 当然在这道题中要注意,当两节点直接相连时,还需特判是否已修建完成 #include<bits/stdc++.h> using nam.原创 2020-07-16 21:46:52 · 195 阅读 · 0 评论 -
P5836 [USACO19DEC]Milk Visits S
luogu P5836 有题解说是lca模板题,奈何本蒟蒻还未掌握lca,但是用并查集来做感觉非常巧妙 因为只有两种奶牛,可以看成两种颜色,把所有结点分成这两个点集。 之后列举起点与终点时,判断两点是否属于一个点集 如果不属于同一个点集 则两点之间路径必然两种都有 如果属于同一个点集 则只有一种颜色,那只需比较一下偏好颜色是否是该点集的颜色 #include<bits/stdc++.h> using namespace std; char s[100005]; int fa[100005]原创 2020-07-16 14:40:37 · 252 阅读 · 0 评论