请求加强数据
查看原帖
请求加强数据
1379399
reductt楼主2024/11/6 15:35

rt,O(n2)O(n^2) 的DP都能随便过去

#include<bits/stdc++.h>
using namespace std;
#define FOR(i,a,b) for(int i=a;i<=b;++i)
#define FOR_(i,a,b) for(int i=b;i>=a;--i)
#define fir first
#define sec second
#define pb push_back
namespace FastIO{
	#define gc getchar
	inline int rd(){int x=0,w=0;char c=gc();while(c<'0'||'9'<c)w|=(c=='-'),c=gc();while('0'<=c&&c<='9')x=x*10+c-'0',c=gc();return w?-x:x;}
	inline void write(int x){if(!x)return;write(x/10);putchar(x%10+'0');}
	inline void print(int x){if(x<0)putchar('-'),write(-x);else if(x>0)write(x);else putchar('0');}
	inline void print(int x,char c){print(x),putchar(c);}
	#undef gc
};
#define rd FastIO::rd
#define print FastIO::print
using ll=long long;
using ull=unsigned long long;
using pii=pair<int,int>;
const int N=5e4+10,INF=1e9;
struct Seg{int l,r;}seg[N];
int f[N];
int Main(){
	int n=rd(),T=rd();
	FOR(i,1,n)seg[i].l=rd(),seg[i].r=rd();
	sort(seg+1,seg+n+1,[&](Seg s1,Seg s2){return s1.r!=s2.r?s1.r<s2.r:s1.l<s2.l;});
	memset(f,0x3f,sizeof(f)),f[0]=0,seg[0]={0,0};
	int ans=INF;
	FOR(i,1,n){
		FOR(j,0,i-1)if(seg[j].r>=seg[i].l-1)f[i]=min(f[i],f[j]+1);
		if(seg[i].r>=T)ans=min(ans,f[i]);
	}
	print(ans==INF?-1:ans,'\n');
	return 0;
}
int main(){
	int T=1;
	while(T--)Main();
	return 0;
}

AC记录

2024/11/6 15:35
加载中...