2011年02月07日
SRM496Div2
やはり課題は速さか。。。
250p AnagramFree ○
文字列がいくつか与えられ、アナグラムになっていない組がいくつあるか求める問題。
class AnagramFree { public: int getMaximumSubset(vector <string> S) { if(S.size()<2) return S.size(); int res=1; for(int i=0;i<S.size();++i){ stable_sort(S[i].begin(),S[i].end()); } stable_sort(S.begin(),S.end()); cout<<S[0]<<endl; string tmp = S[0]; for(int i=1;i<S.size();++i){ if(S[i]!=tmp){ res++; tmp = S[i]; } } return res; } };
500p ColoredStrokes ○
横に赤、縦に青を塗ることができ、重なったところは緑になるというルールで絵を書いていき、与えられた絵を何回で塗ることができるかを求める問題。
class ColoredStrokes { public: int getLeast(vector <string> picture) { int res=0; int r = picture.size(); int c = picture[0].size(); for(int i=0;i<r;++i){ int j=0; int a=0; bool f; while(j<c){ cout<<"i:"<<i<<"j:"<<j<<endl; if(picture[i][j]=='R'||picture[i][j]=='G') f=true; else f=false; while(picture[i][j]=='R'||picture[i][j]=='G'){ j++; if(j>=c) break; } if(f) a++; cout<<"a:"<<a; f=false; j++; cout<<endl; } res+=a; } for(int i=0;i<c;++i){ int j=0; int a=0; bool f; while(j<r){ cout<<"j:"<<j<<"i:"<<i<<endl; if(picture[j][i]=='B'||picture[j][i]=='G') f=true; else f=false; while(picture[j][i]=='B'||picture[j][i]=='G'){ j++; if(j>=r) break; } if(f) a++; cout<<"a"<<a; f=false; j++; cout<<endl; } res+=a; } return res; } };
1000p PalindromfulString ×
Challenge Phase -25p
あえなくちゃれんじしっぱい