0分求助,可以过样例,这个想法错在哪里了。。。
查看原帖
0分求助,可以过样例,这个想法错在哪里了。。。
427110
Logiking楼主2021/5/8 18:43
#include<iostream>
#include<algorithm>
using namespace std;
int n,m;
int dp[5050];
int b[5000005];
struct eat{
	int f;
	int l;
}w[5000005];
bool cmp(eat a,eat b){
	if(a.l == b.l)return a.f < b.f;
	return a.l < b.l;
}
int main(){
	cin >> n >> m;
	int i,j;
	for(i = 1; i <= m; ++i){
		cin >> w[i].f >> w[i].l;// 被吃的鱼  吃的鱼 
		b[w[i].f] = 1;
		if(i <= n)dp[i] = 1;
}
	sort(w+1,w+1+m,cmp);
//	cout << "-----------" << endl;
//	for(i = 1; i <= m; ++i)
//		cout << w[i].f << " " << w[i].l << endl;
	for(i = 1 ;i <= m; ++i){
		for(j = n; j >= 1; --j)
			if(j == w[i].l)dp[j] = max(dp[j],dp[w[i].f]+1) % 80112002;
//		for(j = 1; j <= n; ++j)
//			cout << dp[j] << " ";
//		cout << endl;
	}
	int max = n;
	for(i = n-1; i >= 1; --i)
		if(dp[i] > dp[max] && b[i] == 0)max = i;
	cout << dp[max];
	return 0;
}
2021/5/8 18:43
加载中...