ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

洛谷p3952

2019-07-18 17:00:16  阅读:231  来源: 互联网

标签:realCplx 洛谷 max temp3 flag values p3952 false


  

 

 终于跨过这个坑,没啥好说的,只是纪念一下

#include<bits/stdc++.h>
using namespace std;

bool xSy(string s);

int main(){
  int t, l, w, max;
  bool flag;
  string giveCplx, realCplx, temp2, temp3;
  stack<string> s;
  vector<char> values;
  char temp[100];

  cin >> t;
  while(t--){
    cin >> l >> giveCplx;
    getchar();
    w = 0;
    max = 0;
    flag = true;
    values.clear();
    realCplx = "";
    temp2 = temp3 = "";
    while(!s.empty())
      s.pop();

    while(l--){
      gets(temp);
      // cout << temp << endl;
      if(temp[0] == 'F'){
        if(w != 0){
          w += s.size();
          if(w > max)
            max = w;
          w = 0;
        }
        s.push(temp);
        values.clear();
      }else if(temp[0] == 'E'){
        if(s.empty()){
          flag = false;
        }
        else{
          temp2 = s.top();
          s.pop();
        }

        if( find(values.begin(), values.end(), temp2[2]) != values.end() ){
          flag = false;
          // cout << temp2[5] << endl;
        }else{
          if( xSy(temp2) ){
            if( temp2[temp2.size()-1] == 'n' && temp2[4] != 'n' )
              w++;
            values.push_back(temp2[2]);
          }else{
            // values.clear();
            w = 0;
          }
        }
      }

    }

    if(w > max)
      max = w;

    if(!s.empty())
      flag = false;

    if(flag){
      if(max == 0){
        realCplx += "O(1)";
      }else{
        realCplx += "O(n^";
        while(max != 0){
          temp3 += max%10 + '0';
          max /= 10;
        }
        for(int i=temp3.size()-1; i>=0; i--)
          realCplx += temp3[i];
        realCplx += ")";
      }
      // cout << realCplx << endl;
      if(realCplx == giveCplx)
        cout << "Yes" << endl;
      else
        cout << "No" << endl;
    }else{
      cout << "ERR" << endl;
    }

  }
  return 0;
}

bool xSy(string s){
  int i, j;
  int a, b, c;
  a = b = 0;
  c = 1;

  if(s[s.size()-1] == 'n'){
    return true;
  }else{
    for(i=s.size()-1; i>=0; i--){
      if(s[i] == ' ')
        break;
      a += (s[i]-'0') * c;
      c *= 10;
    }
    c = 1;
    for(j=i-1; j>=0; j--){
      if(s[j] == ' ')
        break;
      if(s[j] == 'n' && s[s.size()-1] != 'n'){
        return false;
      }
      b += (s[j]-'0') * c;
      c *= 10;
    }

    if( a < b )
      return false;
    else
      return true;
  }
}

 

标签:realCplx,洛谷,max,temp3,flag,values,p3952,false
来源: https://www.cnblogs.com/ssNiper/p/11208448.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有