日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

P3952-时间复杂度【模拟】

發(fā)布時間:2023/12/3 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 P3952-时间复杂度【模拟】 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

正題

題目鏈接:https://www.luogu.org/problemnew/show/P3952


題目大意

比較復(fù)雜就直接給截圖了


解題思路

開一個棧來維護序列,因為它保證合法的程序中一個變量不會相互嵌套所以就拿變量的字母當做每個循環(huán)的下標即可。然后對于輸入的x,yx,yx,y有五種情況

  • x=N,y=N(x≤y)x=\mathbb{N},y=\mathbb{N}(x\leq y)x=N,y=N(xy)壓入棧中,不做特殊處理
  • x=n,y=nx=n,y=nx=n,y=n同上
  • x=N,y=N(x>y)x=\mathbb{N},y=\mathbb{N}(x>y)x=N,y=N(x>y)使內(nèi)部嵌套的循環(huán)不做處理
  • x=n,y=Nx=n,y=\mathbb{N}x=n,y=N同上
  • x=N,y=nx=\mathbb{N},y=nx=N,y=n目前時間復(fù)雜度加一
  • 然后特判一下ERRERRERR就好了


    codecodecode

    #include<cstdio> #include<cstring> #include<algorithm> #include<stack> using namespace std; stack<int> q; int T,n,w,none,b[30],times,ans,use[30]; bool fuck; char c; int read() {int num=0;while((c=getchar())!=' '&&c!='\n'){if(c=='n') {c=getchar();return -1;}else num=num*10+c-'0';}return num; } int main() {scanf("%d",&T);while(T--){while(!q.empty()) q.pop();memset(b,0,sizeof(b));memset(use,0,sizeof(use));fuck=none=times=ans=0;scanf("%d ",&n);char c;scanf("O(%c",&c);if(c!='n') w=0;else scanf("%c%d",&c,&w);scanf(")");for(int i=1;i<=n;i++){scanf("\n%c",&c);if(c=='E'){if(fuck) continue;if(q.empty()) {fuck=1;continue;}if(q.top()==none) none=0;if(!none){if(b[q.top()]) times--;b[q.top()]=0;use[q.top()]=0;}q.pop();}if(c=='F'){scanf(" %c ",&c);c-='a'-1;int x=read(),y=read();if(fuck) continue;if(use[c]) {fuck=1;continue;}q.push(c);if(none) continue;use[c]=1;if(x==-1&&y!=-1) none=c;if(x!=-1&&y!=-1&&y<x) none=c;if(x!=-1&&y==-1) times++,b[c]=1;ans=max(ans,times);}}if(!q.empty()||fuck) printf("ERR\n");else if(w!=ans) printf("No\n");else printf("Yes\n");} }

    總結(jié)

    以上是生活随笔為你收集整理的P3952-时间复杂度【模拟】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。