[洛谷]P3952 时间复杂度

女生的网名这么多〃 提交于 2019-12-01 07:16:16

[洛谷]P3952 时间复杂度

题目描述:

恶心的代码:

#include <bits/stdc++.h> using namespace std;  inline void read(int &x){     x=0;int f=1;     char ch=getchar();     while(ch<'0'||ch>'9'){         if(ch=='-')             f=-1;         ch=getchar();     }     while(ch>='0'&&ch<='9'){         x=(x<<1)+(x<<3)+(ch^48);         ch=getchar();     }     x*=f; }  bool judge(string a,string b) {     if(a.size()>b.size())         return 1;     if(a.size()==b.size() && a>b)             return 1;     return 0; }  int findO(string s) {     for(int i=0;i<s.length();i++)         if(s[i]=='(')         {             if(s[i+1]=='n')                 if(isdigit(s[i+4]))                     return (s[i+4]-'0')+10*(s[i+3]-'0');                 else                     return s[i+3]-'0';             if(isdigit(s[i+1]))                 return 0;         } }  string work(int line,int preans) {     map <char,bool> vis,used;     vis.clear(),used.clear();     stack <char> bl;      int n=0,diedai=0;     int flag=-1,fuck=0;     string ansn;      while(line--)     {         char ch;         cin>>ch;         if(ch=='F')         {             cin>>ch;             string a,b;             cin>>a>>b;             if(fuck)                 continue;             if(vis[ch])             {                 ansn="ERR";                 fuck=1;                 continue;             }             bl.push(ch);             vis[ch]=1;             if(b=="n" && a!="n" && flag==-1)             {                 diedai++;                 n=max(n,diedai);                 used[ch]=1;             }             if((a=="n" && b!="n") || (a!="n" && b!="n" && judge(a,b)))                 if(flag==-1)                     flag=ch;         }         else         {             if(fuck)                 continue;             if(bl.empty())             {                 ansn="ERR";                 fuck=1;                 continue;             }             char ccc=bl.top();             vis[ccc]=0;             bl.pop();             if(flag==ccc)                 flag=-1;             if(used[ccc])             {                 used[ccc]=0;                 diedai--;             }         }     }     if(bl.size())         return "ERR";     if(ansn=="ERR")         return ansn;     if(n==preans)         return "Yes";     else         return "No"; }  int main(int argc, char const *argv[]) {     int t;     read(t);     while(t--)     {         int l,n;         string s;         read(l);         cin>>s;         n=findO(s);         cout<<work(l,n)<<endl;     }     return 0; } 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!