#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
struct info
{
int start;
int end;
};
bool cmp(info a,info b)
{
if(a.start<b.start) return 1;
else return 0;
}
int main()
{
int n,m,temp,c;
info t;
vector<info> s;
vector<int> j;
scanf("%d",&n);
while(n--)
{
scanf("%d",&m);
c=0;
for(int i=0;i<m;i++)
{
scanf("%d %d",&t.start,&t.end);
if(t.start%2==0) t.start-=1;
if(t.end%2==0) t.end-=1;
if(t.start>t.end)
{
temp=t.start;
t.start=t.end;
t.end=temp;
}
s.push_back(t);
}
sort(s.begin(),s.end(),cmp);
while(!s.empty())
{
t=s[0];
j.push_back(0);
for(int i=1;i<s.size();i++)
{
if(t.end>=s[i].start) continue;
else
{
t=s[i];
j.push_back(i);
}
}
for(int i=j.size()-1;i>=0;i--)
{
s.erase(s.begin()+j[i]);
}
j.clear();
c++;
}
printf("%d\n",c*10);
}
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int t, i, j, N, P[200];
int s, d, k, min;
cin >> t;
for(i = 0; i < t; ++i)
{
memset(P, 0, sizeof(P));
cin >> N;
for(j = 0; j < N; ++j)
{
cin >> s >> d;
s = (s - 1) / 2;
d = (d - 1) / 2;
if(s > d)
{
s = s ^ d;
d = s ^ d;
s = s ^ d;
}
for(k = s; k <= d; ++k)
++P[k];
}
min = -1;
for(j = 0; j < 200; ++j)
if(P[j] > min)
min = P[j];
cout << min * 10 << endl;
}
return 0;
}
以上共两种解决方案
让我吐血的边缘测试数据(没看清题目)
4
4
1 1
1 1
1 1
1 1