Time Limit Exceed 小球移动
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/12 12:01:29
Time Limit Exceed 小球移动
Description
有一排小球,自左至右依次编号为1,2,3,...,n,可执行两种指令移动小球,L X Y表示将小球X移到小球Y的左边,R X Y表示将小球X移到小球Y的右边,保证X!=Y.输入小球的个数n,指令的条数m和对应的m条指令,请输出最后小球的顺序(提示:n可能高达500000,m可能高达1000000).
Input
小球个数和指令的条数,对应的具体指令
有多组数据
Output
最后小球的顺序
Sample Input
6 2
L 1 4
R 3 5
Sample Output
2 1 4 5 3 6
#include
#include
#define MAXBALL 500000
#define MAXCOM 100000
typedef struct ball
{
int num;
struct ball *next;
} Ball;
Ball* create(int n)
{
int i;
Ball *head,*p,*q;
head = (Ball*) malloc (sizeof(Ball));
head->num = 0;
head->next = NULL;
q = head;
for (i = 0; i < n; i++){
p = (Ball*) malloc (sizeof(Ball));
p->num = i+1;
q->next = p;
q = p;}
q->next = NULL;
return head;
}
Ball* move(Ball* head,int m)
{
int i,x,y;
char com;
Ball *px,*prex,*py,*prey;
for (i=0; i < m; i++)
{
prex = prey = head;
px = prex->next;
py = prey->next;
scanf ("\n%c%d%d",&com,&x,&y);
if (x == y){
exit (1);
}
else
{
while (px->num = x)
{
prex = px;
px = prex->next;
}
while (py->num = y)
{
prey = py;
py = prey->next;
}
if (com == 'L')
{
prex->next = px->next;
prey->next = px;
px->next = py;
}
else if (com == 'R')
{
prex->next = px->next;
px->next = py->next;
py->next = px;
}
}
}
return head;
}
void destroy(Ball* head,int n)
{
int i;
Ball *p;
for (i = 1; i < n ; i++)
{
p = head;
head = head->next;
free (p);
}
free(head);
}
void show(Ball* head)
{
Ball *p;
p = head->next;
while (p)
{
printf ("%d ",p->num);
p = p->next;
}
printf ("\n");
}
int main()
{
int x,y;
char com;
int n,m;
while(scanf ("%d%d",&n,&m) = EOF){
if (n > MAXBALL || m > MAXCOM)
exit (1);
Ball* head = create(n);
move(head,m);
show(head);
destroy(head,n);
}
return 0;
}
为什么Time Limit Exceed 怎么修改呢
Description
有一排小球,自左至右依次编号为1,2,3,...,n,可执行两种指令移动小球,L X Y表示将小球X移到小球Y的左边,R X Y表示将小球X移到小球Y的右边,保证X!=Y.输入小球的个数n,指令的条数m和对应的m条指令,请输出最后小球的顺序(提示:n可能高达500000,m可能高达1000000).
Input
小球个数和指令的条数,对应的具体指令
有多组数据
Output
最后小球的顺序
Sample Input
6 2
L 1 4
R 3 5
Sample Output
2 1 4 5 3 6
#include
#include
#define MAXBALL 500000
#define MAXCOM 100000
typedef struct ball
{
int num;
struct ball *next;
} Ball;
Ball* create(int n)
{
int i;
Ball *head,*p,*q;
head = (Ball*) malloc (sizeof(Ball));
head->num = 0;
head->next = NULL;
q = head;
for (i = 0; i < n; i++){
p = (Ball*) malloc (sizeof(Ball));
p->num = i+1;
q->next = p;
q = p;}
q->next = NULL;
return head;
}
Ball* move(Ball* head,int m)
{
int i,x,y;
char com;
Ball *px,*prex,*py,*prey;
for (i=0; i < m; i++)
{
prex = prey = head;
px = prex->next;
py = prey->next;
scanf ("\n%c%d%d",&com,&x,&y);
if (x == y){
exit (1);
}
else
{
while (px->num = x)
{
prex = px;
px = prex->next;
}
while (py->num = y)
{
prey = py;
py = prey->next;
}
if (com == 'L')
{
prex->next = px->next;
prey->next = px;
px->next = py;
}
else if (com == 'R')
{
prex->next = px->next;
px->next = py->next;
py->next = px;
}
}
}
return head;
}
void destroy(Ball* head,int n)
{
int i;
Ball *p;
for (i = 1; i < n ; i++)
{
p = head;
head = head->next;
free (p);
}
free(head);
}
void show(Ball* head)
{
Ball *p;
p = head->next;
while (p)
{
printf ("%d ",p->num);
p = p->next;
}
printf ("\n");
}
int main()
{
int x,y;
char com;
int n,m;
while(scanf ("%d%d",&n,&m) = EOF){
if (n > MAXBALL || m > MAXCOM)
exit (1);
Ball* head = create(n);
move(head,m);
show(head);
destroy(head,n);
}
return 0;
}
为什么Time Limit Exceed 怎么修改呢
#include
const int MAX=500005;
struct NODE
{
int l,r;
}node[MAX];
int main()
{
//用链用做,你的每次查找复杂度是O(n)我的是O(1)
int n,m,i,j,l,r;
char cmd[10];
while(scanf("%d%d",&n,&m)!=EOF)
{
for(i=1;i
const int MAX=500005;
struct NODE
{
int l,r;
}node[MAX];
int main()
{
//用链用做,你的每次查找复杂度是O(n)我的是O(1)
int n,m,i,j,l,r;
char cmd[10];
while(scanf("%d%d",&n,&m)!=EOF)
{
for(i=1;i
c语言Time Limit Exceed 该怎么修改啊
C语言OJ 提交提示 “Time Limit Exceed”
you absolutely must not exceed the time limit
Output Limit Exceed怎么回事
一个很简单的ACM题,这个提交后怎么会“Time Limit Exceed”?
sender daily send mail exceed limit
don't exceed speed limit 这里的limit怎么理解 什么词性
TIME LIMIT怎么样
C语言聪明的GG 为什么代码显示Output Limit Exceed
翻译If you exceed the speed limit,you will get into trouble wi
这英文The daily bandwidth limit for this member has been exceed
request is inwalid you've exceed the rate limit 是啥意思