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

    あえなくちゃれんじしっぱい



    tanitanin at 00:00│Comments(0)TrackBack(0)TopCoder | プログラミング

    トラックバックURL

    コメントする

    名前
    URL
     
      絵文字