#include<iostream>
#include<string>
using namespace std;
int main(){
string str;
int cnt=1;
while(cin >> str){
cout << "AB Circle #" << cnt++ << ":" << endl;
int ac=0,bc=0,ta=0,tb=0,length=str.length();
for(int i=0;i<length;++i)
if(str[i]=='a')
++ta;
tb=length-ta;
for(int i=0;i<length;++i){
for(int j=i+1;j<length;++j){
for(int k=j-1;k<j;++k)
if(str[k]=='a')
++ac;
bc=j-i-ac;
if(ac==tb-bc || bc==ta-ac)
cout << i << "," << j << endl;
}
}
}
return 0;
}
演算法應該不難懂...
可是跑出來都要9xxms,
不知道還有哪裡可以修改的...
#include
#include
using namespace std;
int main(){
string str;
int cnt=1;
while(cin >> str){
cout << "AB Circle #" << cnt++ << ":" << endl;
int ac=0,bc=0,ta=0,tb=0,length=str.length();
for(int i=0;i if(str[i]=='a')
++ta;
tb=length-ta;
for(int i=0;i for(int j=i+1;j for(int k=j-1;k if(str[k]=='a')
++ac;
bc=j-i-ac;
if(ac==tb-bc || bc==ta-ac)
cout << i << "," << j << endl;
}
}
}
return 0;
}
演算法應該不難懂...
可是跑出來都要9xxms,
不知道還有哪裡可以修改的...
#include
#include
using namespace std;
int main(){
string str;
int cnt=1;
while(cin >> str){
cout << "AB Circle #" << cnt++ << ":" << endl;
int ac=0,bc=0,ta=0,tb=0,length=str.length();
for(int i=0;i if(str[i]=='a')
++ta;
tb=length-ta;
for(int i=0;i for(int j=i+1;j for(int k=j-1;k if(str[k]=='a')
++ac;
bc=j-i-ac;
if(ac==tb-bc || bc==ta-ac)
cout << i << "," << j << endl;
}
}
}
return 0;
}
演算法應該不難懂...
可是跑出來都要9xxms,
不知道還有哪裡可以修改的...
看不怎麼懂...
可以詳細說明一下嗎...?
多謝回覆
#include
#include
using namespace std;
int main(){
string str;
int cnt=1;
while(cin >> str){
cout << "AB Circle #" << cnt++ << ":" << endl;
int ac=0,bc=0,ta=0,tb=0,length=str.length();
for(int i=0;i if(str[i]=='a')
++ta;
tb=length-ta;
for(int i=0;i for(int j=i+1;j for(int k=j-1;k if(str[k]=='a')
++ac;
bc=j-i-ac;
if(ac==tb-bc || bc==ta-ac)
cout << i << "," << j << endl;
}
}
}
return 0;
}
演算法應該不難懂...
可是跑出來都要9xxms,
不知道還有哪裡可以修改的...
看不怎麼懂...
可以詳細說明一下嗎...?
多謝回覆
例如aaabb
總共有3個a.2個b
所以答案是
(0,2)(0,3)(1,3)(1,4)(2,4)(2,5)
#include
#include
using namespace std;
int main(){
string str;
int cnt=1;
while(cin >> str){
cout << "AB Circle #" << cnt++ << ":" << endl;
int ac=0,bc=0,ta=0,tb=0,length=str.length();
for(int i=0;i if(str[i]=='a')
++ta;
tb=length-ta;
for(int i=0;i for(int j=i+1;j for(int k=j-1;k if(str[k]=='a')
++ac;
bc=j-i-ac;
if(ac==tb-bc || bc==ta-ac)
cout << i << "," << j << endl;
}
}
}
return 0;
}
演算法應該不難懂...
可是跑出來都要9xxms,
不知道還有哪裡可以修改的...
看不怎麼懂...
可以詳細說明一下嗎...?
多謝回覆
例如aaabb
總共有3個a.2個b
所以答案是
(0,2)(0,3)(1,3)(1,4)(2,4)(2,5)
看看測資
ab
1a1b
所以答案是
(0,1) baa
2a1b
所以答案是
(0,1)(0,2)(1,2)
#include
#include
using namespace std;
int main(){
string str;
int cnt=1;
while(cin >> str){
cout << "AB Circle #" << cnt++ << ":" << endl;
int ac=0,bc=0,ta=0,tb=0,length=str.length();
for(int i=0;i if(str[i]=='a')
++ta;
tb=length-ta;
for(int i=0;i for(int j=i+1;j for(int k=j-1;k if(str[k]=='a')
++ac;
bc=j-i-ac;
if(ac==tb-bc || bc==ta-ac)
cout << i << "," << j << endl;
}
}
}
return 0;
}
演算法應該不難懂...
可是跑出來都要9xxms,
不知道還有哪裡可以修改的...
看不怎麼懂...
可以詳細說明一下嗎...?
多謝回覆
例如aaabb
總共有3個a.2個b
所以答案是
(0,2)(0,3)(1,3)(1,4)(2,4)(2,5) 沒有這個抱歉= =
看看測資
ab
1a1b
所以答案是
(0,1) baa
2a1b
所以答案是
(0,1)(0,2)(1,2)
#include
#include
using namespace std;
int main(){
string str;
int cnt=1;
while(cin >> str){
cout << "AB Circle #" << cnt++ << ":" << endl;
int ac=0,bc=0,ta=0,tb=0,length=str.length();
for(int i=0;i if(str[i]=='a')
++ta;
tb=length-ta;
for(int i=0;i for(int j=i+1;j for(int k=j-1;k if(str[k]=='a')
++ac;
bc=j-i-ac;
if(ac==tb-bc || bc==ta-ac)
cout << i << "," << j << endl;
}
}
}
return 0;
}
演算法應該不難懂...
可是跑出來都要9xxms,
不知道還有哪裡可以修改的...
看不怎麼懂...
可以詳細說明一下嗎...?
多謝回覆
例如aaabb
總共有3個a.2個b
所以答案是
(0,2)(0,3)(1,3)(1,4)(2,4)(2,5) 沒有這個抱歉= =
看看測資
ab
1a1b
所以答案是
(0,1) baa
2a1b
所以答案是
(0,1)(0,2)(1,2)
#include<iostream>
#include<string>
using namespace std;
int main(){
string str;
int cnt=1;
while(cin >> str){
cout << "AB Circle #" << cnt++ << ":" << endl;
int l=str.length(),_tmp,ta=0,tb=0;
for(int i=0;i<l;++i)
if(str[i]=='a')
++ta;
tb=l-ta;
_tmp=ta;
ta=min(ta,tb);
tb=max(_tmp,tb);
if(ta==tb)
for(int i=0;i<l-ta;++i)
cout << i << "," << i+ta << endl;
else{
for(int i=0;i<l-tb;++i)
cout << i << "," << i+ta << endl << i << "," << i+tb << endl;
for(int i=l-tb;i<l-ta;++i)
cout << i << "," << i+ta << endl;
}
}
return 0;
}
現在到600 ms了..
雖然快了不少,
可是有些高手都只有二位數而已...
還有哪裡可以加強的嗎?
#include
#include
using namespace std;
int main(){
string str;
int cnt=1;
while(cin >> str){
cout << "AB Circle #" << cnt++ << ":" << endl;
int ac=0,bc=0,ta=0,tb=0,length=str.length();
for(int i=0;i if(str[i]=='a')
++ta;
tb=length-ta;
for(int i=0;i for(int j=i+1;j for(int k=j-1;k if(str[k]=='a')
++ac;
bc=j-i-ac;
if(ac==tb-bc || bc==ta-ac)
cout << i << "," << j << endl;
}
}
}
return 0;
}
演算法應該不難懂...
可是跑出來都要9xxms,
不知道還有哪裡可以修改的...
看不怎麼懂...
可以詳細說明一下嗎...?
多謝回覆
例如aaabb
總共有3個a.2個b
所以答案是
(0,2)(0,3)(1,3)(1,4)(2,4)(2,5) 沒有這個抱歉= =
看看測資
ab
1a1b
所以答案是
(0,1) baa
2a1b
所以答案是
(0,1)(0,2)(1,2)
#include
#include
using namespace std;
int main(){
string str;
int cnt=1;
while(cin >> str){
cout << "AB Circle #" << cnt++ << ":" << endl;
int l=str.length(),_tmp,ta=0,tb=0;
for(int i=0;i if(str[i]=='a')
++ta;
tb=l-ta;
_tmp=ta;
ta=min(ta,tb);
tb=max(_tmp,tb);
if(ta==tb)
for(int i=0;i cout << i << "," << i+ta << endl;
else{
for(int i=0;i cout << i << "," << i+ta << endl << i << "," << i+tb << endl;
for(int i=l-tb;i cout << i << "," << i+ta << endl;
}
}
return 0;
}
現在到600 ms了..
雖然快了不少,
可是有些高手都只有二位數而已...
還有哪裡可以加強的嗎?
把cout<<換成printf()會快很多喔
cin也換成scanf
#include
#include
using namespace std;
int main(){
string str;
int cnt=1;
while(cin >> str){
cout << "AB Circle #" << cnt++ << ":" << endl;
int ac=0,bc=0,ta=0,tb=0,length=str.length();
for(int i=0;i if(str[i]=='a')
++ta;
tb=length-ta;
for(int i=0;i for(int j=i+1;j for(int k=j-1;k if(str[k]=='a')
++ac;
bc=j-i-ac;
if(ac==tb-bc || bc==ta-ac)
cout << i << "," << j << endl;
}
}
}
return 0;
}
演算法應該不難懂...
可是跑出來都要9xxms,
不知道還有哪裡可以修改的...
看不怎麼懂...
可以詳細說明一下嗎...?
多謝回覆
例如aaabb
總共有3個a.2個b
所以答案是
(0,2)(0,3)(1,3)(1,4)(2,4)(2,5) 沒有這個抱歉= =
看看測資
ab
1a1b
所以答案是
(0,1) baa
2a1b
所以答案是
(0,1)(0,2)(1,2)
#include
#include
using namespace std;
int main(){
string str;
int cnt=1;
while(cin >> str){
cout << "AB Circle #" << cnt++ << ":" << endl;
int l=str.length(),_tmp,ta=0,tb=0;
for(int i=0;i if(str[i]=='a')
++ta;
tb=l-ta;
_tmp=ta;
ta=min(ta,tb);
tb=max(_tmp,tb);
if(ta==tb)
for(int i=0;i cout << i << "," << i+ta << endl;
else{
for(int i=0;i cout << i << "," << i+ta << endl << i << "," << i+tb << endl;
for(int i=l-tb;i cout << i << "," << i+ta << endl;
}
}
return 0;
}
現在到600 ms了..
雖然快了不少,
可是有些高手都只有二位數而已...
還有哪裡可以加強的嗎?
把cout<<換成printf()會快很多喔
cin也換成scanf
真是受教了...
沒想到換了scanf & printf 就從6xxms掉到3xms 了,
多謝多謝
#include
#include
using namespace std;
int main(){
string str;
int cnt=1;
while(cin >> str){
cout << "AB Circle #" << cnt++ << ":" << endl;
int ac=0,bc=0,ta=0,tb=0,length=str.length();
for(int i=0;i if(str[i]=='a')
++ta;
tb=length-ta;
for(int i=0;i for(int j=i+1;j for(int k=j-1;k if(str[k]=='a')
++ac;
bc=j-i-ac;
if(ac==tb-bc || bc==ta-ac)
cout << i << "," << j << endl;
}
}
}
return 0;
}
演算法應該不難懂...
可是跑出來都要9xxms,
不知道還有哪裡可以修改的...
看不怎麼懂...
可以詳細說明一下嗎...?
多謝回覆
例如aaabb
總共有3個a.2個b
所以答案是
(0,2)(0,3)(1,3)(1,4)(2,4)(2,5) 沒有這個抱歉= =
看看測資
ab
1a1b
所以答案是
(0,1) baa
2a1b
所以答案是
(0,1)(0,2)(1,2)
#include
#include
using namespace std;
int main(){
string str;
int cnt=1;
while(cin >> str){
cout << "AB Circle #" << cnt++ << ":" << endl;
int l=str.length(),_tmp,ta=0,tb=0;
for(int i=0;i if(str[i]=='a')
++ta;
tb=l-ta;
_tmp=ta;
ta=min(ta,tb);
tb=max(_tmp,tb);
if(ta==tb)
for(int i=0;i cout << i << "," << i+ta << endl;
else{
for(int i=0;i cout << i << "," << i+ta << endl << i << "," << i+tb << endl;
for(int i=l-tb;i cout << i << "," << i+ta << endl;
}
}
return 0;
}
現在到600 ms了..
雖然快了不少,
可是有些高手都只有二位數而已...
還有哪裡可以加強的嗎?
把cout<<換成printf()會快很多喔
cin也換成scanf
真是受教了...
沒想到換了scanf & printf 就從6xxms掉到3xms 了,
多謝多謝