• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            ACM___________________________

            ______________白白の屋
            posts - 182, comments - 102, trackbacks - 0, articles - 0
            <2025年8月>
            272829303112
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            常用鏈接

            留言簿(24)

            隨筆分類(332)

            隨筆檔案(182)

            FRIENDS

            搜索

            積分與排名

            最新隨筆

            最新評論

            閱讀排行榜

            評論排行榜

            MiYu原創(chuàng), 轉(zhuǎn)帖請注明 : 轉(zhuǎn)載自 ______________白白の屋    

             

            這幾天一直很YM..... 糾結(jié).....  做個水題 1075......WA N次.....YM.
            (  很簡單的一題,  檢索輸入的串是否存在, 存在就替換輸出, 不存在直接輸出就可以了 )
            最后無奈, 純C++ STL..過了, 時間竟然用了 1600+MS 還是 C++交的,  G++要3400+MS,  不
            明白為什么時間差那么多,  用trie 做了次, 250MS...   改了好幾次效率都上不來   ....  YM 中 把trie 寫成了 偽 map ,只有一點簡單的功能,
            其他的不想寫了.  寫得好復(fù)雜.................... 
            偽 map 代碼如下 :  好長.....................
            /*
            MiYu原創(chuàng), 轉(zhuǎn)帖請注明 : 轉(zhuǎn)載自 ______________白白の屋
                      http://www.cnblog.com/MiYu
            Author By : MiYu
            Test      : 4
            Program   : 1075
            */

            #include <iostream>
            #include <string>
            using namespace std;
            typedef struct dict DIC;
            DIC *root = NULL;
            string ext = "";
            struct dict {
                   dict (){ str = "";memset ( child , 0 , sizeof ( child ) ); }
                   ~dict () { }
                   void del ( DIC * node );
                   string & insert ( char *ins,char *key = NULL );
                   string & find ( char *ins );
                   string & operator [] ( char *a );
                   string & operator = ( char *a );
                   DIC *child[26];
                   string str; 
            };
            void dict::del ( DIC * node )
            {
                 if ( node == NULL ) return;
                 for ( int i = 0; i != 26; ++ i )
                 {
                      if ( node->child[i] != NULL )  del ( node->child[i] );
                 }
                 node->str = "";
                 free ( node );  
            }
            string & dict::operator [] ( char *a )
            {
                   string &str = find ( a );
                   if ( str == "" )
                       return  insert ( a );  
                   return str;
            }
            string & dict::operator = ( char *a )
            {
                  return this->str = a; 
            }
            string & dict::insert ( char *ins,char *key )
            {
                        DIC *cur = this,*now;
                        int len = strlen ( ins );
                        for ( int i = 0; i != len; ++ i )
                        {
                              if ( cur->child[ ins[i] - 'a' ] != NULL ) 
                              {
                                   cur = cur->child[ ins[i] - 'a' ];
                              }
                              else
                              {
                                   now = new DIC;
                                   cur->child[ ins[i] - 'a' ] = now;
                                   cur = now;
                              }
                        } 
                        return cur->str;
            }
            string & dict::find ( char *ins )
            {
                        DIC *cur = this;
                        int len = strlen ( ins );
                        for ( int i = 0; i != len; ++ i )
                        {
                             if ( cur->child[ ins[i] - 'a' ] != NULL )
                                  cur = cur->child[ ins[i] - 'a' ];  
                             else
                                  return ext; 
                        } 
                        return cur->str;
            }
            char words[3010],temp[12],t[12];
            int main ()
            {
                DIC dict;
                root = &dict;
                scanf ( "%s", t );
                while ( scanf ( "%s", t ), strcmp ( t, "END" ) != 0 )
                {
                       scanf ( "%s", temp );
                       dict[temp] = t;
                }
                scanf ( "%s", t );
                getchar();
                while ( gets ( words ) && strcmp ( words, "END" ) != 0 )
                {
                       memset ( temp, 0, sizeof ( temp ) );
                       int len = strlen ( words );
                       for ( int i = 0,j = 0; i != len; ++ i )
                       {
                            if ( isalpha ( words[i] ) )
                            {
                                 temp[j++] = words[i];
                            } 
                            else 
                            {
                                 temp[j] = '\0';
                                 string str = dict[ temp ];
                                 if ( str == "" )
                                      printf ( "%s",temp ); 
                                 else
                                      printf ( "%s",str.c_str() );
                                 putchar ( words[i] );
                                 j = 0; 
                            }
                       }
                       putchar ( 10 );
                }
                return 0;
            }

             

             STL 代碼如下 :  好短....

             /*

            MiYu原創(chuàng), 轉(zhuǎn)帖請注明 : 轉(zhuǎn)載自 ______________白白の屋

                      http://www.cnblog.com/MiYu

            Author By : MiYu

            Test      : 1

            Program   : 1075

            */


            #include <iostream>

            #include <string>

            #include <map>

            using namespace std;

            string words,temp;

            map < string , string > mp;

            int main ()

            {

                cin >> words;

                while ( cin >> words, words != "END" )

                {

                       cin >> temp;

                       mp[ temp ] = words;

                }

                cin >> words;

                getchar();

                while ( getline ( cin, words ) && words != "END" )

                {

                       string out = "";

                       int len = words.size();

                       for ( int i = 0; i != len; ++ i )

                       {

                            if ( isalpha ( words[i] ) )

                            {

                                 out += words[i];

                            } 

                            else 

                            {

                                 if ( mp[out] == "" )

                                      cout << out; 

                                 else

                                      cout << mp[out];

                                 cout << words[i];

                                 out = ""; 

                            }

                       }

                       cout << endl;

                }

                return 0;

            }


             

             

             

             

            亚洲国产成人久久综合一 | 曰曰摸天天摸人人看久久久| 久久久久成人精品无码中文字幕| 日韩人妻无码精品久久免费一 | 日韩电影久久久被窝网| 国产成人久久精品一区二区三区| 精品久久久久久中文字幕| 欧美麻豆久久久久久中文| 国产精品久久久久久影院| 欧洲性大片xxxxx久久久| 久久精品中文无码资源站| 亚洲?V乱码久久精品蜜桃 | 无码超乳爆乳中文字幕久久 | 久久久久亚洲国产| 国产精品亚洲美女久久久| 久久99精品久久只有精品 | 伊人久久大香线蕉综合热线| 国产成年无码久久久久毛片| 伊人热热久久原色播放www| 9191精品国产免费久久| 久久99国内精品自在现线| 久久99热这里只频精品6| 精品久久久久中文字幕一区| jizzjizz国产精品久久| 亚洲综合日韩久久成人AV| 香蕉久久永久视频| 久久午夜综合久久| 日日狠狠久久偷偷色综合0| 国产激情久久久久影院| 色综合久久天天综合| 青青青青久久精品国产| 国产精品青草久久久久婷婷 | 久久精品中文字幕无码绿巨人| 亚洲v国产v天堂a无码久久| 久久久久免费视频| 久久这里只精品99re66| 伊人久久大香线蕉综合网站| 2020久久精品亚洲热综合一本| 久久午夜无码鲁丝片秋霞| 亚洲色欲久久久综合网| 久久精品国产亚洲AV麻豆网站|