#16897: 為何RE?


611015@stu.cchs.chc.edu.tw (超越極限)

學校 : 不指定學校
編號 : 91449
來源 : [163.23.125.193]
最後登入時間 :
2020-06-08 10:38:24
b966. 3. 線段覆蓋長度 -- 2016年3月apcs | From: [118.233.18.144] | 發表日期 : 2019-02-17 10:12

#include<stdio.h>
int main(void){
int a,c,n,b,s;
unsigned int i,j,d,length[10000001];
while(scanf("%d",&n)!=EOF){
for(i=0;i<=10000000;i++){
length[ i ]=0;
}
for(i=0;i<n;i++){
c=0;
d=10000000;
scanf("%d %d",&s,&b);
if(c<b){
c=b;
}
if(d>s){
d=s;
}
if(s!=b){
for(j=s;j<=b;j++){
length[ j ]=1;
}
}
}
a=0;
for(i=d;i<=c;i++){
a+=length[ i ];
}
printf("%d\n",a);
}
return 0;
}

 
#16898: Re:為何RE?


314159265358979323846264338327 ... (少年π)

學校 : 臺北市私立延平高級中學
編號 : 69058
來源 : [223.137.74.225]
最後登入時間 :
2024-04-18 19:26:56
b966. 3. 線段覆蓋長度 -- 2016年3月apcs | From: [42.72.162.88] | 發表日期 : 2019-02-17 10:20

#include
int main(void){
int a,c,n,b,s;
unsigned int i,j,d,length[10000001];
while(scanf("%d",&n)!=EOF){
for(i=0;i<=10000000;i++){
length[ i ]=0;
}
for(i=0;i<n;i++){
c=0;
d=10000000;
scanf("%d %d",&s,&b);
if(c<b){
c=b;
}
if(d>s){
d=s;
}
if(s!=b){
for(j=s;j<=b;j++){
length[ j ]=1;
}
}
}
a=0;
for(i=d;i<=c;i++){
a+=length[ i ];
}
printf("%d\n",a);
}
return 0;
}

開這麼大的陣列當然會RE
如果要開,請宣告在main()以外
當然這題就算這麼做還是會TLE的

請找出更有效率的方法

 
#16900: Re:為何RE?


611015@stu.cchs.chc.edu.tw (超越極限)

學校 : 不指定學校
編號 : 91449
來源 : [163.23.125.193]
最後登入時間 :
2020-06-08 10:38:24
b966. 3. 線段覆蓋長度 -- 2016年3月apcs | From: [118.233.18.144] | 發表日期 : 2019-02-17 12:50

#include
int main(void){
int a,c,n,b,s;
unsigned int i,j,d,length[10000001];
while(scanf("%d",&n)!=EOF){
for(i=0;i<=10000000;i++){
length[ i ]=0;
}
for(i=0;i<n;i++){
c=0;
d=10000000;
scanf("%d %d",&s,&b);
if(c<b){
c=b;
}
if(d>s){
d=s;
}
if(s!=b){
for(j=s;j<=b;j++){
length[ j ]=1;
}
}
}
a=0;
for(i=d;i<=c;i++){
a+=length[ i ];
}
printf("%d\n",a);
}
return 0;
}

開這麼大的陣列當然會RE
如果要開,請宣告在main()以外
當然這題就算這麼做還是會TLE的

請找出更有效率的方法

謝謝,瞭解了


 
ZeroJudge Forum