![](https://img-blog.csdnimg.cn/dec43b3db27149adb681f01162ff21f8.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
AtCoder
文章平均质量分 53
5345
x-d-xxh
这个作者很懒,什么都没留下…
展开
-
abc239_e Subtree K-th Max(dfs,贪心优化)
原题链接题目大意N个数,q个询问接下来一行n个数:x_i表示第i个点的权值是x_i接下来n - 1行,每行两个数a b,表示a和b之间有一条边接下来q行,每行两个数a,b,问以a为根节点的子树中所有节点权值的第b大是多少。2≤N≤1052≤N≤10^52≤N≤1050≤Xi≤1090≤X_i≤10^90≤Xi≤1091≤Ai,Bi≤N1≤A _i ,B_i ≤N1≤Ai,Bi≤N1≤Q≤1051≤Q≤10^51≤Q≤1051≤Vi≤N1≤V_i≤N1≤Vi≤N1≤Ki≤201≤原创 2022-02-20 01:38:46 · 810 阅读 · 0 评论 -
C - Graph Isomorphism
原题链接题意给两个图,问两个图相不相等思路通过全排列,以原图作为下标,然后每种新排列去原图中对应,看和要对比的图一不一样,一样就输出Yes,都不一样就No.坑点无向图,要存两条边。代码#include<bits/stdc++.h>using namespace std;const int N = 10;int n, m;int a[N];int flag[N][N];int End[N][N];int main(){ cin >> n >>原创 2021-12-19 22:18:34 · 444 阅读 · 0 评论 -
D - Neighbors(并查集)
题意:n个人排队,m个意愿,每个意愿给两个数a,b,意思是a和b想站一起,问最后能否完全符合他们的意愿排成一队。思路:当一个人想站一起的人数超过两人那么肯定是no如果关系构成了一个环,那么肯定也是no,当一个人想和两个人站一起但那两个人也想站一起的情况。之前自己也想到了,用了建图+拓扑排序+并查集,想复杂了。正确代码#include<bits/stdc++.h>using namespace std;const int N = 1e5 + 10;int d[N];int原创 2021-12-13 19:54:21 · 144 阅读 · 0 评论 -
D - Neighbors(并查集
题意:n个人排队,m个意愿,每个意愿给两个数a,b,意思是a和b想站一起,问最后能否完全符合他们的意愿排成一队。思路:当一个人想站一起的人数超过两人那么肯定是no如果关系构成了一个环,那么肯定也是no,当一个人想和两个人站一起但那两个人也想站一起的情况。之前自己也想到了,用了建图+拓扑排序+并查集,想复杂了。错误代码#include<bits/stdc++.h> #define int long longusing namespace std;const int N =原创 2021-12-12 20:06:21 · 225 阅读 · 0 评论 -
abc229_e Graph Destruction 并查集
原题链接题意给一个n个点,m条边的图,问依次删去点1 - n,剩余的部分可以组成几个连通块。思路自己的思路一开始不会写,大概看了一眼题解后自己想的是存一个无向图,然后从后往前恢复点,用并查集,然后把比当前点大的且与当前点相连的点合并,合并完以后从最后一个点到当前这个点遍历一遍找有几个不同的部分,然后加入答案数组,可惜这种做法虽然能过大半的样例但是却超时了。正解思路也是用并查集,从后往前恢复点,每恢复一个点答案都+1(假设都不连通),然后去枚举所有和它相连的点,只要有一个点相连但它们并不在同一原创 2021-12-02 10:11:51 · 1266 阅读 · 0 评论