| Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|---|
| 39011 | LYLAKIOI | 【BJ】T1 | C++ | 通过 | 100 | 879 MS | 5316 KB | 1225 | 2025-12-09 09:38:57 |
#include<bits/stdc++.h> #define up(i,l,r) for(int i=(l);i<=(r);++i) #define down(i,l,r) for(int i=(l);i>=(r);--i) #define pi pair<int,int> #define p1 first #define p2 second #define m_p make_pair #define p_b push_back using namespace std; typedef long long ll; const int maxn=1e5+10; inline ll read(){ ll x=0;short t=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')t=-1;ch=getchar();} while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar(); return x*t; } bitset<5005>G[5005],vis; int n,p[5005],is[5005]; struct nd {int l,r;}d[5005]; bool operator<(nd a,nd b){return a.l<b.l;} int dfs(int u){ if(is[u])return 0;is[u]=1; for(int i=(vis&G[u])._Find_first();i<=n;i=(vis&G[u])._Find_first()){ vis[i]=0; if((!p[i])||dfs(p[i])){p[i]=u;return 1;} } return 0; } void slv(){ n=read(); up(i,1,n)d[i].l=read(),d[i].r=read(); sort(d+1,d+n+1); up(i,1,n)up(j,i+1,n)if(d[j].l<d[i].r&&d[i].r<d[j].r)G[i][j]=1; int res=0; up(i,1,n){ up(j,1,n)is[j]=0; vis.set();res+=dfs(i); } cout<<2*n-res; } int main(){ // freopen("magic.in","r",stdin),freopen("magic.out","w",stdout); slv(); return 0; }