狀態表示:\(f(i)\)表示從\(i\)開始的所有食物鏈的集合,儲存個數屬性
狀態計算:\(f(i) = f(j_1)+f(j_2)+...+f(j_k)+...\),其中\(j_k\)為\(i\)的第\(k\)個後繼結點
思路:從每乙個最大的捕食者出發跑一遍記憶化,把從他開始的所有食物鏈的個數加上。
#include#includeusing namespace std;
const int n = 5010, m = 5000010, mod = 80112002;
int h[n], e[m], ne[m], idx;
int n, m;
int in[n];
int f[n];
void add(int a, int b)
int dfs(int u)
if(f[u] == 0) f[u] = 1;
return f[u];
}int main()
int res = 0;
for(int i = 1; i <= n; i ++)
if(in[i] == 0) res = (res + dfs(i)) % mod;
cout << res;
}
P4017 最大食物鏈計數
你知道食物鏈嗎?delia生物考試的時候,數食物鏈條數的題目全都錯了,因為她總是重複數了幾條或漏掉了幾條。於是她來就來求助你,然而你也不會啊!寫乙個程式來幫幫她吧。給你乙個食物網,你要求出這個食物網中最大食物鏈的數量。這裡的 最大食物鏈 指的是生物學意義上的食物鏈,即最左端是不會捕食其他生物的生產者...
P4017 最大食物鏈計數
你知道食物鏈嗎?delia 生物考試的時候,數食物鏈條數的題目全都錯了,因為她總是重複數了幾條或漏掉了幾條。於是她來就來求助你,然而你也不會啊!寫乙個程式來幫幫她吧。給你乙個食物網,你要求出這個食物網中最大食物鏈的數量。這裡的 最大食物鏈 指的是生物學意義上的食物鏈,即最左端是不會捕食其他生物的生產...
P4017 最大食物鏈計數
miku 很水的拓撲排序 dp 看錯題除外。這道題是要求有多少條食物鏈滿足 左端是不會捕食其他生物的生產者,最右端是不會被其他生物捕食的消費 不是求最長的多長或者有幾條最長!把一些無關緊要的變數起一些人名真有意思 include includeusing namespace std queueq s...