Intervals on the Ring
Posted Jozky86
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Intervals on the Ring相关的知识,希望对你有一定的参考价值。
题意:
给出环上的一组区间,需要构造环上的一组区间使得这些区间的交是给定的区间的并
题解:
集合的摩尔定理告诉我们:
∪
A
i
‾
=
∩
A
i
‾
\\overline{\\cup A_{i}}=\\cap\\overline{A_{i}}
∪Ai=∩Ai(区间的并的补等于区间的补的交),所以直接输出每一段未被给出区间覆盖的区间的补即可
例如:n=6,A1=[1,1],A2=[3,3],A3=[5,5],则输出[3,1],[5,3],[1,5]
代码:
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e3+10;
int sum[maxn*2];
int a[maxn*2];
int t,n,m;
struct xy
{
int l,r;
}e[maxn];
bool cmp(xy x,xy y)
{
return x.l<y.l;
}
int main()
{
cin>>t;
while(t--)
{
cin>>n>>m;
memset(sum,0,sizeof(sum));
memset(e,0,sizeof(e));
memset(a,0,sizeof(a));
for(int i=1;i<=m;i++)
{
int a,b;
cin>>a>>b;
if(b<a)
{
sum[a]++,sum[b+n+1]--;
//sum[1]++,sum[b+1]--;
}
else
{
sum[a]++,sum[b+1]--;
}
}
for(int i=1;i<=n;i++)
{
a[i]=a[i-1]+sum[i];
}
for(int i=n+1;i<=2*n;i++)
{
a[i]=a[i-1]+sum[i];
if(a[i])
{
a[i-n]++;
}
}
//cout<<1<<" "<<n<<endl;
int tot=0;
int flag=0;
int x[maxn];
int cnt=0;
int l,r;
a[n+1]=0;
for(int i=1;i<=n+1;i++)
{
//cout<<a[i]<<endl;
if(flag==0)
{
if(a[i])
{
flag=1;
e[++tot].l=i;
//x[++cnt]=i;
}
}
else if(flag==1)
{
if(a[i]==0)
{
flag=0;
e[tot].r=i-1;
x[++cnt]=i-1;
}
}
//cout<<i<<" "<<tot<<endl;
}
//cout<<a[n]<<endl;
//cout<<tot<<endl;
//if(a[n])e[tot].r=n;
sort(e+1,e+tot+1,cmp);
if(a[1]&&a[n])
{
if(tot==1)
{
cout<<1<<endl;
cout<<1<<" "<<n<<endl;
continue;
}
cout<<tot-1<<endl;
for(int i=2;i<=tot;i++)cout<<e[i].l<<" "<<e[i-1].r<<endl;
continue;
}
else
{
cout<<tot<<endl;
if(tot==1)
{
cout<<e[1].l<<" "<<e[1].r<<endl;
}
else
{
cout<<e[1].l<<" "<<e[tot].r<<endl;
for(int i=2;i<=tot;i++)cout<<e[i].l<<" "<<e[i-1].r<<endl;
}
continue;
}
}
return 0;
}
/*
10
7
3
7 2
6 3
5 2
*/
以上是关于Intervals on the Ring的主要内容,如果未能解决你的问题,请参考以下文章
R语言ggplot2可视化:置信区间与分组具有相同色彩自定义置信区间带的色彩Make confidence intervals the same color as line by group
环境初始化 Build and Install the Apache Thrift IDL Compiler Install the Platform Development Tools(代码片段
LeetCode 435. Non-overlapping Intervals
maven web项目的web.xml报错The markup in the document following the root element must be well-formed.(代码片段