#8460: NA (score:80) TLE


domen111 (Domen)

學校 : 國立臺南第一高級中學
編號 : 33404
來源 : [220.143.232.243]
最後登入時間 :
2024-10-13 10:02:54
a565. 2.p&q的邂逅 -- 101學年度台北市資訊學科能力競賽 | From: [210.70.137.251] | 發表日期 : 2013-12-19 16:04

最後一筆測資一直TLE,請問有更好的寫法嗎? 謝謝
 
 
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
while(n--)
{
string s,ts;
cin>>ts;
//去除 「. 」
s.reserve(ts.size());
for(int i=0;i<ts.size();i++)
s+=ts[i];
int ans=0;
while(1)
{
bool ok=0;
for(int i=0;i<s.size();i++)
{
if(s[i]=='p')
for(int j=i+1;j<s.size();j++)
if(s[j]=='q')
{
s[i]=s[j]='.';
ans++;
ok=1;
break;
}
}
if(ok==0)break;
}
cout<<ans<<endl;
}
}

 
#8461: Re:NA (score:80) TLE


domen111 (Domen)

學校 : 國立臺南第一高級中學
編號 : 33404
來源 : [220.143.232.243]
最後登入時間 :
2024-10-13 10:02:54
a565. 2.p&q的邂逅 -- 101學年度台北市資訊學科能力競賽 | From: [210.70.137.251] | 發表日期 : 2013-12-19 16:09

我用網路上別人寫的也是最後一筆測資TLE

https://sites.google.com/site/zsgititit/home/jin-jiec-cheng-shi-she-ji/101bei-shi-sai-2-pairing

 
#8465: Re:NA (score:80) TLE


silithus (希利蘇斯)

學校 : 澳門培道中學
編號 : 33314
來源 : [60.246.116.246]
最後登入時間 :
2023-09-19 17:00:10
a565. 2.p&q的邂逅 -- 101學年度台北市資訊學科能力競賽 | From: [60.246.98.83] | 發表日期 : 2013-12-20 01:37


比賽原題每行長度不超過256字元,但這裏的最大長度是107,所以會TLE。

這是我AC的代碼:

#include <stdio.h>

int main(void)

{

int n,p,pair,done;

char c;

scanf("%d\n", &n);

while( n-- ) {

p = pair = done = 0;

while( !done ) {

c = getchar();

switch( c ) {

case 'p': p++; break;

case 'q':

if( p > 0 ) {

p--;

pair++;

} break;

case '.': break;

default: done = 1; break;

}

}

printf("%d\n", pair);

}

return 0;

}

 

 
#10297: Re:NA (score:80) TLE


310573sao (Jiburiru)

學校 : 新北市立板橋高級中學
編號 : 48055
來源 : [59.127.176.2]
最後登入時間 :
2020-04-01 20:44:03
a565. 2.p&q的邂逅 -- 101學年度台北市資訊學科能力競賽 | From: [220.135.171.68] | 發表日期 : 2015-09-28 08:10


比賽原題每行長度不超過256字元,但這裏的最大長度是107,所以會TLE。

這是我AC的代碼:

#include

int main(void)

{

int n,p,pair,done;

char c;

 

scanf("%d\n", &n);

while( n-- ) {

p = pair = done = 0;

while( !done ) {

c = getchar();

switch( c ) {

case 'p': p++; break;

case 'q':

if( p > 0 ) {

p--;

pair++;

} break;

case '.': break;

default: done = 1; break;

}

}

printf("%d\n", pair);

}

return 0;

}

 

我原本用 scanf_s char  結果還會tle   


改成c=getchar() 0.9s    原來getchar 那麼快

 
ZeroJudge Forum