2011/11/13

Topcoder SRM 523(Div.2) 参戦記


始めに250点問題を解きました。まだC++に慣れていないのに忙しさにかまけて練習もしていなかったため、すごく時間がかかってしまいました。その上汚いソースです。提出して、172.29点を得ました。

次いで、500点でしたが、こちらは撃墜されてしまいました。何処が悪いのかまだ考え中です。

500点問題を解いた後大変眠くなりました。日本時間でA.M.3:00だから仕方ありません。私はそのまま眠ってしまいました。

問題はこちら(英語).
得点は172.29, 順位は487/1237. Ratingは1004->987.

[Easy(C++),Accepted]

#include<iostream>
#include<string>
#include<vector>
using namespace std;


class AlphabetPath{
public:
string doesItExist(vector <string> letterMaze){
int i,j,nowi=-1,nowj=-1;
for(i=0;i<letterMaze.size();i++){
for(j=0;j<letterMaze[i].length();j++){
if(letterMaze[i][j]!='A') continue;
nowi=i;
nowj=j;
break;
}
if(nowi!=-1 && nowj!=-1) break;
}
for(i=1;i<=25;i++){
if(nowi>0){
if(letterMaze[nowi-1][nowj]=='A'+i){
nowi--;
continue;
}
}
if(nowj>0){
if(letterMaze[nowi][nowj-1]=='A'+i){
nowj--;
continue;
}
}
if(nowi<letterMaze.size()-1){
if(letterMaze[nowi+1][nowj]=='A'+i){
nowi++;
continue;
}
}
if(nowj<letterMaze[nowi].length()-1){
if(letterMaze[nowi][nowj+1]=='A'+i){
nowj++;
continue;
}
}
return (string)"NO";
}
return (string)"YES";
}
};


[Medium(C++),Challenged]

#include<iostream>
#include<cstdio>
#include<cstdlib>


using namespace std;


class CountingSeries{
public:
long long countThem(long long a, long long b, long long c, long long d, long long upperBound){
long long count=(upperBound-a)/b+1,tmp;
if(d==1){
if((c-a)%b!=0) count++;
}else for(tmp=c;tmp<=upperBound;tmp*=d) if(tmp<a || (tmp-a)%b!=0) count++;
return count;
}
};

0 件のコメント:

コメントを投稿