• Codeforces 1090B


    题目链接:https://codeforces.com/contest/1090/problem/B

    Examples
    standard input

    The most famous characters of Pushkin’s works are Onegin cite{onegin},
    Dubrovsky cite{dubrovsky} and Tsar Saltan cite{saltan}.
    egin{thebibliography}{99}
    ibitem{saltan} A.S.Pushkin. The Tale of Tsar Saltan. 1832.
    ibitem{onegin} A.S.Pushkin. Eugene Onegin. 1831.
    ibitem{dubrovsky} A.S.Pushkin. Dubrovsky. 1841.
    end{thebibliography}

    standard output

    Incorrect
    egin{thebibliography}{99}
    ibitem{onegin} A.S.Pushkin. Eugene Onegin. 1831.
    ibitem{dubrovsky} A.S.Pushkin. Dubrovsky. 1841.
    ibitem{saltan} A.S.Pushkin. The Tale of Tsar Saltan. 1832.
    end{thebibliography}

    standard input

    The most famous characters of Pushkin’s works are Onegin cite{onegin},
    Dubrovsky cite{dubrovsky} and Tsar Saltan cite{saltan}.
    egin{thebibliography}{99}
    ibitem{onegin} A.S.Pushkin. Eugene Onegin. 1831.
    ibitem{dubrovsky} A.S.Pushkin. Dubrovsky. 1841.
    ibitem{saltan} A.S.Pushkin. The Tale of Tsar Saltan. 1832.
    end{thebibliography}

    standard output

    Correct

    题意:

    文章末尾这个参考文献的顺序可能是错乱的,需要你修正一下。

    题解:

    就是考察字符串输入输出以及其他一些操作的,用map<string,int>哈希一下参考文献的标识,然后老老实实模拟就行了。

    AC代码:

    #include<bits/stdc++.h>
    using namespace std;
    
    struct Cite{
        int idx;
        string str;
        Cite(){}
        Cite(int _i,const string& s) {
            idx=_i, str=s;
        }
        bool operator<(const Cite& oth)const {
            return idx<oth.idx;
        }
    };
    vector<Cite> cites;
    
    int tot;
    map<string,int> mp;
    
    void Find(const string& s)
    {
        int pos,beg=0;
        while((pos=s.find("\cite{",beg))!=-1)
        {
            string res;
            for(beg=pos+6;beg<s.size() && s[beg]!='}';beg++) res+=s[beg];
            mp[res]=++tot;
        }
    }
    int main()
    {
        ios::sync_with_stdio(0);
        cin.tie(0), cout.tie(0);
    
        string str;
        bool END=0;
        tot=0; mp.clear();
        while(getline(cin,str))
        {
            if(str=="\begin{thebibliography}{99}") {END=1;continue;}
            if(str=="\end{thebibliography}") break;
            if(!END) Find(str);
            else
            {
                int pos=str.find("\bibitem{");
                string res;
                for(pos+=9;pos<str.size() && str[pos]!='}';pos++) res+=str[pos];
                cites.push_back(Cite(mp[res],str));
            }
        }
    
        bool CORRECT=1;
        for(int i=0;i<cites.size();i++) if(cites[i].idx!=i+1) CORRECT=0;
        if(CORRECT) cout<<"Correct
    ";
        else
        {
            cout<<"Incorrect
    ";
            sort(cites.begin(),cites.end());
            cout<<"\begin{thebibliography}{99}
    ";
            for(int i=0;i<cites.size();i++) cout<<cites[i].str<<'
    ';
            cout<<"\end{thebibliography}
    ";
        }
    }
  • 相关阅读:
    Java使用POS打印机(无驱)
    关于在安装MySQL时报错"本地计算机上的mysql服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止"的解决方法
    Eclipse使用Git教程
    Android studio使用git教程
    数组
    序列化对象
    对象的三个属性
    javascript权威指南笔记--javascript语言核心(六)
    javascript权威指南笔记--javascript语言核心(五)--getter和setter属性
    javascript权威指南笔记--javascript语言核心(四)
  • 原文地址:https://www.cnblogs.com/dilthey/p/10094524.html
Copyright © 2020-2023  润新知