I题
题解:构造k个区间使k个区间所有区间交集是m区间的并集,只需要遍历环形的a[i].l和a[i-1].r就可以把中间的无关数字剔除。
代码:
#include<iostream>
#include<algorithm>
using namespace std;
int t,n,m;
struct node{
	int l,r;
}a[1005];
bool cmp(node x,node y)
{
	return x.l<y.l;
}
int main()
{
	cin>>t;
	while(t--)
	{
		cin>>n>>m;
		for(int i=0;i<m;i++)cin>>a[i].l>>a[i].r;
		sort(a,a+m,cmp);
		cout<<m<<endl;
		for(int i=0;i<m;i++)cout<<a[i].l<<" "<<a[(m-1+i)%m].r<<endl;
	}
	return 0;
}