食物链 || 带权并查集 #include <cstdio> using namespace std; const int maxn=5e4+3; int f[maxn], w[maxn]; void init(int n) { for(int i = 1; i <= n; ++i) f[i] = ...
分类:
其他好文 时间:
2020-10-07 21:22:07
阅读次数:
29
这篇文章主要讨论了DAG上dp和树形dp DAG上dp DAG上的dp一般有记忆化搜索与拓扑排序两种方法来实现。 食物链 食物链 两者时间复杂度都是线性的 拓扑排序解法: #include <iostream> #include <queue> using namespace std; const ...
分类:
其他好文 时间:
2020-09-04 17:25:19
阅读次数:
61
AcWing 240. 食物链 #include <bits/stdc++.h> using namespace std; const int N=1e6+10; int n,m; int p[N],d[N]; //find函数返回的是根节点 int find(int x){ if(p[x]!=x) ...
###思路 这个题一看到什么从入度为零的点到出度为零的点,很容易想到toposort。这个题就是最基本的toposort+DAG DP,没啥好说的…… 主要注意一定是遇到出度为0的点,一条食物链才能算是结束,才能够累加答案。 Code #include<iostream> #include<cstd ...
分类:
其他好文 时间:
2020-07-28 10:17:55
阅读次数:
75
####题目描述 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。 A吃B, B吃C,C吃A。 现有N个动物,以1-N编号。 每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。 有人用两种说法对这N个动物所构成的食物链关系进行描述: 第一种说法是”1 X Y”,表示 ...
分类:
编程语言 时间:
2020-06-18 01:03:18
阅读次数:
98
看到拓扑排序感觉非常遥远的复杂,不喜欢图。看了拓扑排序的原理,很像广搜。 以本题样例为例: 了解一下 出度 和 入度 5的出度为3 入度为 0 ,3的出度为2 入度为2…… for循环 找到秃头 5 入队列, 然后给跟他有联系的所有点一一剃头,看谁再秃,秃了入队列,再对继往开来的秃子进行操作。 #i ...
分类:
编程语言 时间:
2020-06-17 10:46:50
阅读次数:
56
动态规划的引入 P4017 最大食物链计数【拓扑排序的条数计算】 ...
分类:
编程语言 时间:
2020-06-13 21:03:07
阅读次数:
53
鄙视像条食物链, 是个绕不开的怪圈。 在这个怪圈中,每一个人, 都在链条的最末端。 朋友圈有鄙视链, 相亲有鄙视链, 程序员圈也有鄙视链 看完下面的鄙视链, 你是哪一层? ↓↓↓↓ 【1】努力成为全栈,吊打产品经理 而更加牛逼的,相信大家听过这样一段话:Java和PHP谁是世界上最好的语言,那到底谁 ...
分类:
编程语言 时间:
2020-06-08 23:40:44
阅读次数:
76
【$Description$】https://www.luogu.com.cn/problem/P2024 一道带权并查集的题 这道题很重要的一点就是: 有$3$种不同的动物$A,B,C$。且$A$吃$B$,$B$吃$C$,$C$吃$A$ 由此我们可以得到:对于一个动物,有它的同类、天敌、猎物。 按 ...
分类:
其他好文 时间:
2020-04-14 10:35:52
阅读次数:
59
这是一个非常经典的带权并查集,有两种写法。 1 边权并查集 规定一下,当x和y这条边的权值为0时,表示x和y是同类,当为1时,表示x吃y,当为2时,表示x被y吃。 一共有三种状态,如图,当A吃B,B吃C时,C必须吃A,路径压缩后,A被C吃。 然后就是带权并查集的模板了。 判断条件,当x和y在同一颗树 ...
分类:
其他好文 时间:
2020-04-08 22:17:26
阅读次数:
73