请问一下这样为什么会错呢
查看原帖
请问一下这样为什么会错呢
672837
DaShabby楼主2023/2/6 21:58
#include<bits/stdc++.h>
#define x first
#define y second
using namespace std;
typedef long long ll;
const int maxn=5e5+44;
ll inf=1e14;
int tot,idx,cnt;
int dp[maxn];
//if(有任务结束)dp[i]=max{dp[task[i][j]]};
//else dp[i]=dp[i-1]+1;
vector<int>task[maxn];
void work(){
	int n,k,x,y,MAX=0;
	scanf("%d%d",&n,&k);
	while(k--){
		scanf("%d%d",&x,&y);
		y=x+y-1;
		task[y].push_back(x-1);
	}
	for(int i=1;i<=n;i++){
		if(task[i].size()){
			for(int j=0;j<task[i].size();j++){
				int t=task[i][j];
				dp[i]=max(dp[i],dp[t]);
			}
		}
		else dp[i]=dp[i-1]+1;
		MAX=max(MAX,dp[i]);
	}
	printf("%d\n",MAX);
} 
int main(){
	work();
	return 0;
}
2023/2/6 21:58
加载中...