看了别人思路后写的
#include <stdio.h>
#include <string.h>
int a[201];
int ac()
{
int n,i,j,ans=0;
memset(a,0,sizeof(a));
scanf("%d",&n);
for(i=0;i<n;++i)
{
int r1,r2;
scanf("%d %d",&r1,&r2);
int e1 = (r1+1)/2;
int e2 = (r2+1)/2;
int max = e1<e2?e2:e1;
for(j=e1>e2?e2:e1;j<=max;++j)
{
a[j] += 10;
}
}
for(i=1;i<201;++i)
if(a[i] > ans)
ans = a[i];
return ans;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
printf("%d\n",ac());
}
return 0;
}
自己原来写的 WA了 留个念想 希望以后再看知道错哪里了 思维和代码的差距还很大 加油
#include <stdio.h>
const int inf = 0xf3f3f3f3;
int a[200][401];
int ac()
{
int n,i,j,k,ans=0,judge=0;
scanf("%d",&n);
for(i=0;i<=n;++i)
for(j=0;j<401;++j)
a[i][j] = 0;
for(i=1;i<=n;++i)
{
int r1,r2;
scanf("%d %d",&r1,&r2);
int min = r1<r2?r1:r2;
int max = r1<r2?r2:r1;
int edge = ((max%2)==1)?max+1:max;
for(j=((min%2)==1)?min:min-1;j<=edge;++j)
{
a[i][j] = 1;
}
if(i==1)
{
ans += 10;
continue;
}
else
{
for(k=1;k<i;++k)
{
judge = 1;
for(j=((min%2)==1)?min:min-1;j<=edge;++j)
{
if(a[k][j])
{
judge = 0;
break;
}
}
if(judge)
break;
}
if(!judge)
ans += 10;
}
judge = 0;
}
return ans;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
printf("%d\n",ac());
}
}