青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

題目:
題目+我的解答打包下載
http://www.shnenglu.com/Files/zuroc/06_baidustar_translator.zip
百度語言翻譯機

百度的工程師們是非常注重效率的,在長期的開發與測試過程中,他們逐漸創造了一套獨特的縮略語。他們在平時的交談、會議,甚至在各種技術文檔中都會大量運用。

為了讓新員工可以更快地適應百度的文化,更好地閱讀公司的技術文檔,人力資源部決定開發一套專用的翻譯系統,把相關文檔中的縮略語和專有名詞翻譯成日常語言。

輸入要求:
輸入數據包含三部分:
1. 第一行包含一個整數N(N<=10000),表示總共有多少個縮略語的詞條;

2. 緊接著有N行的輸入,每行包含兩個字符串,以空格隔開。第一個字符串為縮略語(僅包含大寫英文字符,長度不超過10字節),第二個字符串為日常語言(不包含空格,長度不超過255字節);

3. 從第N+2開始到輸入結束為包含縮略語的相關文檔(總長度不超過1000000個字節)。例:

6
PS 門戶搜索部
NLP 自然語言處理
PM 產品市場部
HR 人力資源部
PMD 產品推廣部
MD 市場發展部
百度的部門包括PS,PM,HR,PMD,MD等等,其中PS還包括NLP小組。
樣例:in.txt

輸出要求:
輸出將縮略語轉換成日常語言后的文檔。(將縮略語轉換成日常語言,其他字符保留原樣)。例:

百度的部門包括門戶搜索部,產品市場部,人力資源部,產品推廣部,市場發展部等等,其中門戶搜索部還包括自然語言處理小組。
樣例:out.txt

評分規則:

1.程序將運行在一臺Linux機器上(內存使用不作嚴格限制),在每一測試用例上運行不能超過10秒,否則該用例不得分;

2.要求程序能按照輸入樣例的格式讀取數據文件,按照輸出樣例的格式將運行結果輸出到標準輸出上。如果不能正確讀入數據和輸出數據,該題將不得分;

3.該題目共有4個測試用例,每個測試用例為一個輸入文件。各測試用例占該題目分數的比例分別為25%,25%,25%,25%;

4.該題目20分。


注意事項:
1.輸入數據是中英文混合的,中文采用GBK編碼。
GBK: 是又一個漢字編碼標準,全稱《漢字內碼擴展規范》。采用雙字節表示,總體編碼范圍為 8140-FEFE,首字節在 81-FE 之間,尾字節在40-FE 之間,排除xx7F。總計 23940 個碼位,共收入 21886 個漢字和圖形符號,其中漢字(包括部首和構件)21003 個,圖形符號 883 個。

2.為保證答案的唯一性,縮略語的轉換采用正向最大匹配(從左到右為正方向)原則。請注意樣例中PMD的翻譯。

代碼:
/*
我的思路

1.縮略語
vector< string >    //用來保存縮略語
按string的length排序,來滿足"縮略語的轉換采用正向最大匹配".

2.一次性的進行文本替換,以防止替換內容再次被替換
map<pair<int,int>,string>        //位置范圍-縮略語
vector<pair<int,int>>    //保存位置范圍
map<string,string>    //縮略語
*/

#include <fstream>
#include <sstream>
#include <iostream>

#include <vector>
#include <map>
#include <list>

#include <string>

#include <algorithm>
#include <functional>

using namespace std;

#define BEG_END(c)        (c.begin()),(c.end())

typedef string::size_type str_size;

/** 轉換string為指定的類型 */
template<typename Target, typename Source>
Target lexical_cast(const Source& arg)
{
    Target result;
    istringstream(arg)>>result;
    return result;
}

vector<str_size> find_all(const string& source , const string& aim)
{

    vector<str_size>    poses;

    str_size pos=0;
    str_size aim_len=aim.size();

    while ( (pos=source.find(aim, pos)) != string::npos)
    {
            poses.push_back(pos);
            pos += aim_len;
    }

    return poses;
}

bool is_long(const string& a , const string& b)
{
    return a.length()>b.length();
}

bool is_first_small(const pair<str_size,str_size>& a , const  pair<str_size,str_size>& b)
{
    return a.first<b.first;
}



template<class T,class I>
bool not_in_scope(I begin,const I& end,const T& aim)
{
    for (;begin!=end;++begin)
    {
        if (
            (aim>=(begin->first) ) && (aim<= (begin->first+begin->second) )
        )return false;
    }
    return true;
}

int main()
{

    string infile_name="in.txt" , outfile_name="out.txt";

    ofstream outfile(outfile_name.c_str());
    //ostream& outfile = cout;

    ifstream infile(infile_name.c_str());
    if (!infile)
    {
        cerr<<"Error : can't open input file "<<infile_name<<" .\n";
        return -1;
    }

    string line;
    vector<string> abbr_dict;
    map<string,string>    abbr_word;

    getline(infile,line);
    for (int i=lexical_cast<int>(line);i!=0;--i)
    {
        getline(infile,line);
        string abbr,word;
        istringstream(line)>>abbr>>word;
        abbr_dict.push_back(abbr);
        abbr_word[abbr]=word;
        //cout<<abbr<<' '<<word<<'\n';
    }

    sort(BEG_END(abbr_dict),is_long);

    while (getline(infile,line))
    {
        typedef vector<pair<str_size,str_size> > replace_scope;

        replace_scope    to_replace_scope;
        map<pair<str_size,str_size>,string>    to_replace;

        for (
            vector<string>::iterator i=abbr_dict.begin(),end=abbr_dict.end();
            i!=end;
            ++i
        )
        {
            vector<str_size>    poses=find_all(line,*i);
            str_size aim_len=i->size();
            for (vector<str_size>::iterator j=poses.begin(),end=poses.end();j
                    !=end;++j)
            {
                pair<str_size,str_size> scope=make_pair(*j,aim_len);
                if (not_in_scope(BEG_END(to_replace_scope),*j))
                {
                    to_replace_scope.push_back(scope);
                    to_replace[scope]=*i;
                }
            }
        }

        sort(BEG_END(to_replace_scope),is_first_small);

        str_size offset=0;

        for (
            replace_scope::iterator i=to_replace_scope.begin(),end=to_replace_scope.end();
            i!=end;
            ++i
        )
        {
            str_size len=i->second ;
            string word=abbr_word[to_replace[*i]];
            line.replace(i->first+offset,len ,word);
            offset+=word.size()-len;
        }


        outfile<<line<<'\n';
    }

    return 0;
}
posted on 2007-05-13 21:25 張沈鵬 閱讀(1045) 評論(0)  編輯 收藏 引用 所屬分類: C++
 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产精品一区免费观看| 久久国内精品自在自线400部| 亚洲午夜激情网页| 在线播放国产一区中文字幕剧情欧美| 99热在这里有精品免费| 在线看日韩欧美| 亚洲在线视频观看| 一区二区激情| 欧美成人资源网| 欧美成人免费视频| 国语自产偷拍精品视频偷| 亚洲一区二区三区涩| 亚洲婷婷国产精品电影人久久| 玖玖综合伊人| 欧美国产精品v| 影音先锋日韩有码| 久久蜜桃香蕉精品一区二区三区| 久久av一区二区三区漫画| 国产精品欧美久久久久无广告| 亚洲精品一区二区三区樱花| 亚洲精品少妇30p| 免费成人av在线看| 欧美成人一二三| 亚洲成色999久久网站| 久久精品国产91精品亚洲| 久久精品一二三| 国产亚洲精品成人av久久ww| 午夜精品久久久久久久久久久久久 | 欧美日韩视频一区二区三区| 亚洲国产精品va在线观看黑人| 亚洲国产精品一区二区www在线 | 国户精品久久久久久久久久久不卡| 亚洲综合视频1区| 久久国产精品毛片| 国内精品久久国产| 久久久久一区二区三区四区| 欧美成人免费va影院高清| 亚洲人成7777| 欧美极品一区二区三区| 99re热精品| 亚洲欧美综合一区| 国产一区二区三区丝袜| 久久久精品欧美丰满| 亚洲电影自拍| 亚洲无亚洲人成网站77777| 国产精品久久福利| 欧美影片第一页| 亚洲国产精品久久久久婷婷老年| 日韩亚洲国产精品| 国产精品永久| 美女视频黄免费的久久| 亚洲伦理中文字幕| 久久se精品一区精品二区| 影音国产精品| 欧美亚州在线观看| 久久精品观看| 亚洲精品午夜| 久久精品国产清高在天天线 | 亚洲精品激情| 国产精品久久久久久户外露出| 午夜欧美大片免费观看| 亚洲电影免费观看高清| 午夜精品久久久久影视| 在线观看欧美日韩国产| 国产精品久久久久久久久久免费看| 欧美一区二区三区四区夜夜大片| 亚洲二区三区四区| 久久丁香综合五月国产三级网站| 亚洲国产精品一区二区www在线| 欧美三级网页| 蜜臀久久99精品久久久久久9 | 国产精品欧美日韩| 欧美电影免费网站| 午夜久久福利| 一区二区国产日产| 欧美成人情趣视频| 欧美中文字幕视频在线观看| 99精品视频一区二区三区| 国产一区二区高清视频| 欧美日韩xxxxx| 久久综合狠狠综合久久综合88| 亚洲无玛一区| 亚洲理伦电影| 亚洲电影下载| 欧美成人午夜激情| 久久久精彩视频| 欧美亚洲在线播放| 亚洲日本无吗高清不卡| 国产在线精品一区二区夜色| 国产精品亚洲一区| 欧美日韩中文字幕精品| 欧美成人视屏| 久久在线视频在线| 久久精品国产精品| 亚洲欧美制服另类日韩| 在线亚洲精品福利网址导航| 亚洲精品国产拍免费91在线| 欧美成人69| 欧美插天视频在线播放| 老司机久久99久久精品播放免费| 欧美一区二区三区免费大片| 亚洲一区二区三区在线| 亚洲图片在线| 亚洲无线一线二线三线区别av| 夜夜嗨av一区二区三区| 日韩系列欧美系列| 亚洲国产高清aⅴ视频| 亚洲国产裸拍裸体视频在线观看乱了| 国产在线不卡视频| 影音先锋欧美精品| 亚洲国产成人在线播放| 亚洲国产欧美国产综合一区| 亚洲国产视频一区| 亚洲精品一区二区三区av| 亚洲人人精品| 亚洲精品少妇| 亚洲网友自拍| 午夜激情亚洲| 久久亚洲二区| 欧美韩日精品| 99re6这里只有精品视频在线观看| 99国产精品国产精品毛片| 在线综合亚洲| 欧美一区二区三区视频免费播放| 久久国产精品99久久久久久老狼| 久久激情五月丁香伊人| 男男成人高潮片免费网站| 欧美激情久久久| 欧美色中文字幕| 国产午夜精品一区二区三区视频 | 亚洲欧美精品| 久久久精品国产99久久精品芒果| 久久成人国产| 欧美国产丝袜视频| 99国产精品99久久久久久| 亚洲欧美国产一区二区三区| 久久九九全国免费精品观看| 欧美精品久久天天躁| 国产精品视频久久| 亚洲国产视频一区二区| 亚洲综合视频在线| 毛片av中文字幕一区二区| 亚洲人成网站在线播| 性欧美大战久久久久久久久| 女仆av观看一区| 国产精品久久久久久妇女6080 | 国产欧美日韩亚州综合| 亚洲高清色综合| 亚洲香蕉伊综合在人在线视看| 久久久久久高潮国产精品视| 亚洲精品乱码久久久久久蜜桃91| 亚洲综合色在线| 欧美高清你懂得| 国语自产精品视频在线看| 亚洲视频www| 免费看亚洲片| 亚洲永久网站| 欧美区在线播放| 怡红院精品视频在线观看极品| 一区二区国产精品| 免费一级欧美在线大片| 亚洲视频图片小说| 欧美福利视频在线| 国内自拍一区| 性欧美长视频| 9久re热视频在线精品| 欧美成人午夜激情在线| 国户精品久久久久久久久久久不卡| 正在播放亚洲| 欧美激情一区二区三区蜜桃视频| 午夜欧美不卡精品aaaaa| 欧美午夜a级限制福利片| 亚洲激情在线观看视频免费| 久久久精品国产免费观看同学| 妖精成人www高清在线观看| 久久中文欧美| 激情亚洲成人| 久久乐国产精品| 香港成人在线视频| 国产精品久久久久免费a∨ | 亚洲宅男天堂在线观看无病毒| 亚洲电影免费观看高清完整版在线| 欧美影院成人| 国产在线高清精品| 久久精品视频在线观看| 亚洲一区二区精品| 国产精品久久久久9999高清| 中文在线资源观看视频网站免费不卡| 亚洲第一综合天堂另类专| 狼人社综合社区| 亚洲国产一区二区在线| 欧美黄色aaaa| 欧美91大片| 日韩视频免费观看高清在线视频| 欧美成人xxx| 欧美va亚洲va香蕉在线| 亚洲精品一区二区在线观看| 亚洲国产一区二区三区在线播| 快播亚洲色图| 亚洲美女精品一区|