URAL
青烟绕指柔!
我不怕千万人阻挡,只怕自己投降。
展开
-
URAL - 2030
题目链接:URAL - 2030对每个点维护给其他点加了多少,然后每个修改一个点是时候,顺便维护父亲节点。那么查询的时候就只需要知道父亲节点的增加值。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define int long longusing namespace std;const int N=1e5+10,mod=1e9+7;int n,m,a[N],v原创 2020-08-26 21:00:59 · 2377 阅读 · 0 评论 -
URAL - 1742
题目链接:URAL - 1742显然,最小次数就是入度为0的点+单独环的个数。最多的个数就是:每个环只能贡献一次,答案就为n - 所有环的大小 + 环的个数。我们直接DFS找环即可。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define int long longusing namespace std;const int N=1e5+10;int n,原创 2020-08-22 22:59:36 · 171 阅读 · 0 评论 -
URAL - 1651
题目链接:URAL - 1651因为边有访问顺序,所以我们可以采用动态加边的方式。也就是按照顺序枚举每一条边,是否会更新下一个点。但是注意我们要输出方案,所以我们应该是对每个编号存上一个转移点的位置。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define int long longusing namespace std;const int N=1e5+1原创 2020-08-22 22:04:44 · 213 阅读 · 0 评论 -
URAL - 1487
题目链接:URAL - 1487这个题目说的不是很清楚,如果一个队A比另一个队B强的定义是:不比能打过B的若。也就是说,不存在一个队即能打过A,也能打过B。这个我们可以先维护每个点打不过的点,然后传递闭包得到所有打得过自己的点。这里可以Bitset优化。然后查询的时候直接就是两个bitset与的个数。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define原创 2020-08-17 21:50:28 · 168 阅读 · 0 评论