我觉得我的代码没啥问题了,但是提交过后还是有两个TLE,求纠错
#include <stdio.h>
int main()
{
int n;
int a[1000001][2]; //a[i][0]是头,a[i][1]是尾
scanf("%d", &n);
int i,j,t;
for (i = 1; i <= n; i++)
{
scanf("%d%d", &a[i][0], &a[i][1]);
}
for (i = 1; i < n; i++) //a按尾排序
{
for (j = 1; j <= n - i; j++)
{
if (a[j][1] > a[j + 1][1])
{
t = a[j][1];
a[j][1] = a[j + 1][1];
a[j + 1][1] = t;
t = a[j][0];
a[j][0] = a[j + 1][0];
a[j + 1][0] = t;
}
}
}
int count = 1; //第一场必须参加
int y = a[1][1]; //y记录最新一次参加比赛的 尾
for (i = 2; i <= n; i++)
{
if (a[i][1] > y && a[i][0] >= y)
{
count++;
y = a[i][1];
}
}
printf("%d",count);
return 0;
}
修改处见注释,供参考:
#include <stdio.h>
int a[1000001][2]; //a[i][0]是头,a[i][1]是尾 修改
int main()
{
int n;
scanf("%d", &n);
int i, j, t;
for (i = 0; i < n; i++) //修改
{
scanf("%d%d", &a[i][0], &a[i][1]);
}
for (i = 0; i < n - 1; i++) //a按尾排序 修改
{
for (j = 0; j < n - i - 1; j++) //修改
{
if (a[j][1] > a[j + 1][1])
{
t = a[j][1];
a[j][1] = a[j + 1][1];
a[j + 1][1] = t;
t = a[j][0];
a[j][0] = a[j + 1][0];
a[j + 1][0] = t;
}
}
}
int count = 1; //第一场必须参加
int y = a[0][1]; //修改 //y记录最新一次参加比赛的 尾
for (i = 1; i < n; i++)
{
if (a[i][0] >= y) //if (a[i][1] > y && a[i][0] >= y) 修改
{
count++;
y = a[i][1];
}
}
printf("%d", count);
return 0;
}