• 【比赛】NOIP2017 时间复杂度


    恶心的模拟题,考场上犯了一堆错误,多组数据清空没清完、数组开小。。。民间都是50分,结果CCF90。。

    考完后随便改改就过了,还好只少了10分,如果真的是50,我估计会疯掉。

    因为考场的时候没写好,所以最终的代码也很难看。

      1 #include<bits/stdc++.h>
      2 using namespace std;
      3 int T,n,stk[100],p[100],fnum,stack_num,sck[110],sck_num;
      4 char s[20],ch[2],res[100];
      5 inline void init()
      6 {
      7     memset(p,0,sizeof(p));
      8     memset(res,0,sizeof(res));
      9     memset(sck,0,sizeof(sck));
     10     memset(stk,0,sizeof(stk));
     11     sck_num=0;
     12     stack_num=0;
     13     fnum=0;
     14 }
     15 inline void Dealwith()
     16 {
     17     init();
     18     int ans=0,mark=0,nxt=1,nnum=0,las=0,done=0;
     19     for(register int i=1;i<=n;++i)
     20     {
     21         scanf("%s",ch);
     22         if(ch[0]=='F')
     23         {
     24             if(done)
     25             {
     26                 scanf("%s",ch);
     27                 scanf("%s",ch);
     28                 scanf("%s",ch);
     29                 continue;
     30             }
     31             fnum++;
     32             scanf("%s",ch);
     33             if(p[ch[0]-'a'])
     34             {
     35                 printf("ERR
    ");
     36                 done=1;
     37             }
     38             p[ch[0]-'a']=1;
     39             stk[++stack_num]=ch[0]-'a';
     40             int fl1,num1=0,fl2,num2=0;
     41 
     42             scanf("%s",ch);
     43             if(ch[0]>='0'&&ch[0]<='9')
     44             {
     45                 fl1=0;
     46                 for(register int j=0;j<strlen(ch);++j)num1=(num1<<3)+(num1<<1)+(ch[j]^'0');
     47             }
     48             else fl1=1;
     49 
     50             scanf("%s",ch);    
     51             if(ch[0]>='0'&&ch[0]<='9')
     52             {
     53                 fl2=0;
     54                 for(register int j=0;j<strlen(ch);++j)num2=(num2<<3)+(num2<<1)+(ch[j]^'0');
     55             }
     56             else fl2=1;
     57 
     58             if(fnum!=nxt)continue;
     59 
     60             if(fl1==1&&fl2==0)nxt=fnum;
     61             else if(fl1==0&&fl2==0)
     62             {
     63                 if(num1>num2)nxt=fnum;
     64                 else nxt=fnum+1,sck[++sck_num]=1;
     65             }
     66             else if(fl1==0&&fl2==1)
     67             {
     68                 mark=1;
     69                 nnum++;
     70                 if(ans<nnum)ans++;
     71                 nxt=fnum+1;
     72                 sck[++sck_num]=2;
     73             }
     74             else sck[++sck_num]=1,nxt=fnum+1;
     75         }
     76         else
     77         {
     78             if(done)continue;
     79             if(!fnum)
     80             {
     81                 printf("ERR
    ");
     82                 done=1;
     83             }
     84             if(done)continue;
     85             if(nxt==fnum+1)
     86             {
     87                 fnum--,nxt--;
     88                 if(sck[sck_num--]==2)nnum--;
     89             }
     90             else fnum--;
     91             p[stk[stack_num--]]=0;
     92         }
     93     }
     94     if(done)return ;
     95     if(fnum)
     96     {
     97         printf("ERR
    ");
     98         return ;
     99     }
    100     if(mark)
    101     {
    102         res[0]='O',res[1]='(',res[2]='n',res[3]='^';
    103         int respos=3,tmppos=0;
    104         char tmp[10];
    105         while(ans)tmp[++tmppos]=ans%10+'0',ans/=10;
    106         while(tmppos)res[++respos]=tmp[tmppos--];
    107         res[++respos]=')';res[++respos]='';
    108     }
    109     else res[0]='O',res[1]='(',res[2]='1',res[3]=')',res[4]='';
    110 
    111     if(!strcmp(s,res))printf("Yes
    ");
    112     else printf("No
    ");
    113 }
    114 int main()
    115 {
    116     freopen("complexity.in","r",stdin);
    117     freopen("complexity.out","w",stdout);
    118     scanf("%d",&T);
    119     while(T--)
    120     {
    121         scanf("%d",&n);scanf("%s",s);
    122         Dealwith();
    123     }
    124     return 0;
    125 }
    NOIP2017 时间复杂度
  • 相关阅读:
    零基础学python-2.6 数字与字符串
    零基础学python-2.5 变量与赋值
    零基础学python-2.4 操作符
    零基础学python-2.3 注释
    js原型和原型链
    ES6数据结构Set、Map
    JS高阶函数--------map、reduce、filter
    vue-cli3.0以上项目中引入jquery的方法
    vue项目中使用echarts map报错Cannot read property 'push' of undefined nanhai.js
    js 将时间戳转成时间格式化
  • 原文地址:https://www.cnblogs.com/hongyj/p/8000872.html
Copyright © 2020-2023  润新知