首页 > TAG信息列表 > P4017

P4017 最大食物链计数

题目传送门 一、试题讲解 https://www.cnblogs.com/CJYBlog/p/12198894.html 二、拓扑排序完整代码 #include <bits/stdc++.h> using namespace std; const int N = 5005; //生物种类上限 const int M = 500005; //吃与被吃的关系数上限 const int MOD = 80112002;

P4017 最大食物链计数 【拓扑排序】

洛谷 P4017 -> Click Here 题意 一个 DAG(又向无环图),询问从无入度的点到无出度的点的路径个数有多少个 思路 拓扑排序 找出无出度的点加入到队列中,更新与当前点有边的点,删去此点及其边,再寻找新的无入度的点加入到队列中 code #include<iostream> #include<map> #include<queue> #de

P4017 最大食物链计数 拓扑排序思想 dp

原题解: #include<bits/stdc++.h> using namespace std; int n,m,ru[5005],chu[5005],a,b,f[5005],ans; int mp[5005][5005]; queue<int> q; int main(){     cin>>n>>m;     for(int i=1;i<=m;i++){         scanf("%d%d", &a, &b

P4017 最大食物链计数

  题目链接https://www.luogu.com.cn/problem/P4017 知识点:拓扑排序+动态规划 一、刚开始审题不清,误认为是求AOV最长生物链上生物的个数,便出现如下代码 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int p=80112002; 4 int n, m, ans; 5 vector<int>g[5005];

Luogu P4017 最大食物链计数

思路 这个题一看到什么从入度为零的点到出度为零的点,很容易想到toposort。这个题就是最基本的toposort+DAG DP,没啥好说的…… 主要注意一定是遇到出度为0的点,一条食物链才能算是结束,才能够累加答案。 Code #include<iostream> #include<cstdio> #include<algorithm> #include<cs

P4017 最大食物链计数 (拓扑排序)

看到拓扑排序感觉非常遥远的复杂,不喜欢图。看了拓扑排序的原理,很像广搜。 以本题样例为例:   了解一下 出度 和 入度 5的出度为3 入度为 0 ,3的出度为2  入度为2…… for循环 找到秃头 5  入队列, 然后给跟他有联系的所有点一一剃头,看谁再秃,秃了入队列,再对继往开来的秃子进行操

洛谷 P4017 最大食物链计数 (拓扑排序,思维)

题意:有\(n\)个点,连\(m\)条边,求最多有多少条食物链(从头走到为有多少条路径). 题解:之前抽了点时间把拓扑排序补完了,这题其实就是一道拓扑排序的裸题.关于拓扑排序: ​ 1.首先,我们用\(in\)记录某个点的入度,\(out\)表示这个点向外所连的点. ​ 2.遍历所有

【数论】[逆元,错排]P4017排列计数

题目描述 求有多少种长度为n的系列A,满足以下条件: 1~n这n个数在序列中各出现一次;若第i个数a[i]的值为i,则称i是稳定的。序列恰有m个数是稳定的。 输出序列个数对1e9+7取模的结果。 Solution 显然是从N个数中选m个数稳定,剩下的错排。答案即为:\(C^m_n * d[n - m]\) \(C^m_n = \frac{n!