题目求助
  • 板块灌水区
  • 楼主DFs_YYDS
  • 当前回复17
  • 已保存回复17
  • 发布时间2024/7/4 20:08
  • 上次更新2024/7/21 15:06:32
查看原帖
题目求助
1119406
DFs_YYDS楼主2024/7/4 20:08

有点类似于校门外的数,有区间 1∼n1\sim n,然后输入 mm 个区间,将每个区间里的数全变成 11(一开始是 00),操作完后区间中 00 的个数,1≤n≤1061\le n\le 10^6。

正解是 O(n log n)O(n\ log\ n) 的贪心,但是我的 O(n)O(n) (差不多)的代码却全错了(不知道是TLE还是WA),求助。

#include<bits/stdc++.h>
using namespace std;
int a[1000005];
int main(){
	int n,m,ans=0;
	cin>>n>>m;
	for(int i=0;i<m;i++){
		int s,e;
		cin>>s>>e;
		a[s]=max(e,a[i]);
	}
	for(int i=1;i<=n;){
		if(a[i]==0)ans++,i++;
		else{
			int Max=a[i];
			for(i=i+1;i<=Max;i++)Max=max(Max,a[i]);
		}
	}
	cout<<ans;
	return 0;
}
2024/7/4 20:08
加载中...