杂题
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 · 262 阅读 · 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 · 76 阅读 · 0 评论 -
Codeforces Round #656 (Div. 3) E. Directing Edges
题目传送门比赛的时候没有想出来要怎么做,隐隐约约一种感觉,要是有向边不成环的话,就一定会是YES但是具体没想到之后应该怎么去加边赛后看cf题解用到了拓扑排序,当时也没明白他俩有什么关联想了一段时间,加上手动画了一下图发现对于拓扑排序的结果,如果添加顺序较后的节点到顺序较前的节点的有向边,必然会构成环如果顺着排序顺序建边则不会构成环所以解体只需按照以下步骤进行存图时存两个图(一个只有有向边即‘1’,一个只有双向边即‘0’)对有向图进行拓扑排序(若排序结果节点数少于n,则说明有环,输出NO)原创 2020-07-19 11:24:28 · 205 阅读 · 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 · 126 阅读 · 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 · 199 阅读 · 0 评论