#30049: C++,在自己電腦跑它的測試都對,但資測卻NA


e002933 (徐MAN)

學校 : 不指定學校
編號 : 158405
來源 : [111.71.113.217]
最後登入時間 :
2023-11-18 16:56:51
b542. 聽到這兩個人的身高,讓十萬人都驚呆了 -- 104學年度板橋高中校內資訊學科能力競賽(二) | From: [118.150.201.99] | 發表日期 : 2022-04-24 20:31

請教一下版友我的程式碼哪裡有問題?

因為在電腦上跑測試都沒問題

但在資測時答案卻都不對

 

 

 

#include<iostream>

using namespace std;

 

int main() {

int n, q;

cin>>n>>q;

int tall[n], plus[q];

for(int i = 0; i < n; i++)

cin>>tall[i];

for(int i = 0; i < q; i++)

cin>>plus[i];

for(int i = 0; i < q; i++) {

bool has = false;

for(int j = 0; j < n-1; j++) {

int k = tall[j] > tall[j+1] ? tall[j]- tall[j+1] : tall[j+1]- tall[j];

if(plus[i] == k) {

has = true;

break;

}

}

if(has)

cout<<"YES"<<endl;

else

cout<<"NO"<<endl;

}

return 0;

}

 
#30065: Re: C++,在自己電腦跑它的測試都對,但資測卻NA


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [101.136.203.77]
最後登入時間 :
2024-04-07 15:34:14
b542. 聽到這兩個人的身高,讓十萬人都驚呆了 -- 104學年度板橋高中校內資訊學科能力競賽(二) | From: [27.246.161.196] | 發表日期 : 2022-04-25 21:00

請教一下版友我的程式碼哪裡有問題?

因為在電腦上跑測試都沒問題

但在資測時答案卻都不對

 

 

 

#include

using namespace std;

 

int main() {

int n, q;

cin>>n>>q;

int tall[n], plus[q];

for(int i = 0; i < n; i++)

cin>>tall[i];

for(int i = 0; i < q; i++)

cin>>plus[i];

for(int i = 0; i < q; i++) {

bool has = false;

for(int j = 0; j < n-1; j++) {

int k = tall[j] > tall[j+1] ? tall[j]- tall[j+1] : tall[j+1]- tall[j];

if(plus[i] == k) {

has = true;

break;

}

}

if(has)

cout<<"YES"<

else

cout<<"NO"<

}

return 0;

}


你只測試了相鄰的人的身高差,不相鄰的人沒有考慮到

然後我修改了一下就TLE了...我也不知道該怎麼AC

 
#30089: Re: C++,在自己電腦跑它的測試都對,但資測卻NA


e002933 (徐MAN)

學校 : 不指定學校
編號 : 158405
來源 : [111.71.113.217]
最後登入時間 :
2023-11-18 16:56:51
b542. 聽到這兩個人的身高,讓十萬人都驚呆了 -- 104學年度板橋高中校內資訊學科能力競賽(二) | From: [118.150.201.99] | 發表日期 : 2022-04-27 23:43

請教一下版友我的程式碼哪裡有問題?

因為在電腦上跑測試都沒問題

但在資測時答案卻都不對

 

 

 

#include

using namespace std;

 

int main() {

int n, q;

cin>>n>>q;

int tall[n], plus[q];

for(int i = 0; i < n; i++)

cin>>tall[i];

for(int i = 0; i < q; i++)

cin>>plus[i];

for(int i = 0; i < q; i++) {

bool has = false;

for(int j = 0; j < n-1; j++) {

int k = tall[j] > tall[j+1] ? tall[j]- tall[j+1] : tall[j+1]- tall[j];

if(plus[i] == k) {

has = true;

break;

}

}

if(has)

cout<<"YES"<

else

cout<<"NO"<

}

return 0;

}


你只測試了相鄰的人的身高差,不相鄰的人沒有考慮到

然後我修改了一下就TLE了...我也不知道該怎麼AC

 

謝謝您的解答

修改了一下,現在變60分了

最後兩個資測TLE

有什麼方法降低複雜度嗎?



 
#30090: Re: C++,在自己電腦跑它的測試都對,但資測卻NA


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [101.136.203.77]
最後登入時間 :
2024-04-07 15:34:14
b542. 聽到這兩個人的身高,讓十萬人都驚呆了 -- 104學年度板橋高中校內資訊學科能力競賽(二) | From: [27.246.161.196] | 發表日期 : 2022-04-28 09:12

請教一下版友我的程式碼哪裡有問題?

因為在電腦上跑測試都沒問題

但在資測時答案卻都不對

 

 

 

#include

using namespace std;

 

int main() {

int n, q;

cin>>n>>q;

int tall[n], plus[q];

for(int i = 0; i < n; i++)

cin>>tall[i];

for(int i = 0; i < q; i++)

cin>>plus[i];

for(int i = 0; i < q; i++) {

bool has = false;

for(int j = 0; j < n-1; j++) {

int k = tall[j] > tall[j+1] ? tall[j]- tall[j+1] : tall[j+1]- tall[j];

if(plus[i] == k) {

has = true;

break;

}

}

if(has)

cout<<"YES"<

else

cout<<"NO"<

}

return 0;

}


你只測試了相鄰的人的身高差,不相鄰的人沒有考慮到

然後我修改了一下就TLE了...我也不知道該怎麼AC

 

謝謝您的解答

修改了一下,現在變60分了

最後兩個資測TLE

有什麼方法降低複雜度嗎?




看了一下我的程式碼,發現可以再加速,終於AC了

我用的方法是先排序,然後二分搜,時間複雜度應該是O(QNlogN)。

 
ZeroJudge Forum