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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

qu(判定操作序列)NOIP模拟 数据结构判断 模拟

發(fā)布時間:2024/9/21 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 qu(判定操作序列)NOIP模拟 数据结构判断 模拟 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

【問題描述】 給你一個操作序列,問這個維護操作序列的數(shù)據(jù)結(jié)構(gòu)是哪一種?

【輸入格式】 第一行是一個正整數(shù)?代表操作數(shù)目。 接下來?行,每行兩個正整數(shù)???, ?。如果??? = 1,代表我們將?加入數(shù)據(jù)結(jié)構(gòu);如果??? = 2,代表我們從數(shù)據(jù)結(jié)構(gòu)中取出了一個元素,這個元素的值是?。

【輸出格式】 輸出三行,第一行代表數(shù)據(jù)結(jié)構(gòu)是否可能是棧,第二行代表數(shù)據(jù)結(jié)構(gòu)是否可 能是隊列,第三行代表數(shù)據(jù)結(jié)構(gòu)是否可能大根堆。每一行的結(jié)果都只可能是“YES” 或者“No”。

根據(jù)題意,建立三種數(shù)據(jù)結(jié)構(gòu):隊列、優(yōu)先隊列(本質(zhì)是大根堆)和棧,然后模擬即可。

坑點有兩個。

一個是,當數(shù)據(jù)全部彈出后,還有彈出操作,那一定不滿足任意數(shù)據(jù)結(jié)構(gòu),三個都是No

第二個,題目的YES是全部大寫的,但是No的o是小寫的。

附上代碼

#include<cstdio> #include<queue> using namespace std; template<class T> inline void read(T &_a){bool f=0;int _ch=getchar();_a=0;while(_ch<'0' || _ch>'9'){if(_ch=='-')f=1;_ch=getchar();}while(_ch>='0' && _ch<='9'){_a=(_a<<1)+(_a<<3)+_ch-'0';_ch=getchar();}if(f)_a=-_a; }int n,opt,v,stack[10001],head; bool ansq=true,anspq=true,ansstk=true; queue<int>q; priority_queue<int>pq;int main() {freopen("qu.in","r",stdin);freopen("qu.out","w",stdout);read(n);for (register int i=1;i<=n;++i){read(opt); read(v);if(opt==1){if(ansq) q.push(v);if(ansstk) stack[++head]=v;if(anspq) pq.push(v);} else {if(ansstk){if(head&&stack[head]==v) --head;else ansstk=false;}if(ansq){if(!q.empty()&&q.front()==v) q.pop();else ansq=false;}if(anspq){if(!pq.empty()&&pq.top()==v) pq.pop();else anspq=false;}}}printf("%s\n%s\n%s",ansstk?"YES":"No",ansq?"YES":"No",anspq?"YES":"No");return 0; }

?

轉(zhuǎn)載于:https://www.cnblogs.com/jaywang/p/7755945.html

總結(jié)

以上是生活随笔為你收集整理的qu(判定操作序列)NOIP模拟 数据结构判断 模拟的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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