题解:AT_arc200_c [ARC200C] Movie Theater
考虑一对区间
- 若相离,贡献为
0 ; - 若相交但不包含,贡献为
1 ; - 若包含,贡献为
2 \times [P_{in}>P_{out}] 。
为了最小化答案,我们应该让包含关系的内部区间的
/*
2025.11.13
* Happy Zenith Noises *
*/
#include<bits/stdc++.h>
#define int long long
#define fi first
#define se second
#define pb push_back
#define RG register
using namespace std;
typedef pair<int,int>P;
typedef pair<int,P>PP;
const int MAXN=1005;
int n,l[MAXN],r[MAXN],in[MAXN],ans[MAXN],tot;
vector<int>g[MAXN];
void solve(){
cin>>n;tot=n;
for(int i=1;i<=n;i++)cin>>l[i]>>r[i],in[i]=0,g[i].clear();
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(l[j]>l[i]&&r[j]<r[i])g[i].pb(j),in[j]++;
}
}
priority_queue<int>q;
for(int i=1;i<=n;i++)if(!in[i])q.push(i);
while(!q.empty()){
int x=q.top();q.pop();ans[x]=tot--;
for(int i:g[x]){
in[i]--;
if(!in[i])q.push(i);
}
}
for(int i=1;i<=n;i++)cout<<ans[i]<<" ";cout<<"\n";
}
signed main(){
ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);
int T;cin>>T;
while(T--)solve();
return 0;
}