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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【ST表】栈(jzoj 2295)

發布時間:2023/12/3 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【ST表】栈(jzoj 2295) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

jzoj 2295

題目大意:

有一個A數組,一個B數組和一個棧,現在把A數組的數存入棧(操作1),然后再從棧中取出來放在B數組,但取出可以從棧頂(操作2),也可以從棧底(操作3),現在問怎樣操作可以使B數組的字典序最小

輸入樣例

5 1 4 3 5 2

輸出樣例

1 2 4 3 5

數據范圍

對于10%的數據,n?5n \leqslant 5n?5;
對于30%的數據,n?1000n \leqslant 1000n?1000;
對于100%的數據,n?100000n \leqslant 100000n?100000,保證給出的AiA_iAi?1~n1\sim n1n 的一個排列;

樣例解釋

依次使用操作 1、2、1、1、1、1、2、3、3、2 可以得到樣例輸出 1 2 4 3 5 。

解題思路:

因為要求的是字典序最小的,所以我們每一個數字都要盡量小,我們可以拿的有棧的兩端和A數列剩下的所有數(剩下的數求最大可以用ST表),我們選最小的,如果選的是A數列剩下的數中最小的,那我們讓這個數前面的數全部入棧

代碼:

#include<cmath> #include<cstdio> #include<cstring> #include<iostream> using namespace std; const int MAXX=100500; int n,w,l,r,bg,s1,s2,minn,a[MAXX],p[MAXX],f[MAXX][20],s[MAXX][20]; void js(int l,int r)//查詢ST表 {if (l>r){minn=MAXX;return;}int k=log(r-l+1)/log(2);if (f[l][k]<f[r-(1<<k)+1][k]){minn=f[l][k];//最小值w=s[l][k];//位置}else{minn=f[r-(1<<k)+1][k];w=s[r-(1<<k)+1][k];} } int main() {scanf("%d",&n);for (int i=1;i<=n;++i){scanf("%d",&a[i]);f[i][0]=a[i];s[i][0]=i;}int t=log(n)/log(2)+1;for (int j=1;j<t;++j)//建ST表for (int i=1;i<=n-(1<<j)+1;++i)if (f[i][j-1]<f[i+(1<<(j-1))][j-1]){f[i][j]=f[i][j-1];s[i][j]=s[i][j-1];}else{f[i][j]=f[i+(1<<(j-1))][j-1];s[i][j]=s[i+(1<<(j-1))][j-1];}l=1;r=0;bg=1;a[0]=MAXX;for (int i=1;i<=n;++i){while(p[l]&&l<=r) l++;//去掉選過的while(p[r]&&l<=r) r--;if (l<=r) s1=a[l],s2=a[r];//判斷棧是否為空else s1=s2=MAXX;js(bg,n);if (minn<s1&&minn<s2)//l,r表示棧的范圍,bg表示A序列的開始位置{printf("%d ",minn);p[w]=1;//記錄bg=w+1;//A序列的開始位置在這個點后面+1r=w-1;//前面的全部入棧}else if(s1<s2)//從棧底取出{printf("%d ",s1);p[l]=1;l++;}else{printf("%d ",s2);//從棧頂取出p[r]=1;r--;}} }

總結

以上是生活随笔為你收集整理的【ST表】栈(jzoj 2295)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩成人午夜影院 | 操亚洲美女 | 四虎影视精品 | 丰满少妇一区二区三区 | 亚洲熟妇无码久久精品 | 九九99久久 | 波多野结衣一区二区三区中文字幕 | 成人av电影免费观看 | 中文字幕一区二 | 亚洲国产成人久久 | 人妻少妇精品视频一区二区三区 | 在线观看欧美一区二区 | 久草福利免费 | 日本香蕉视频 | 非洲一级片 | www.夜夜爽| 69视频免费观看 | 亚洲天堂最新 | 亚洲精品欧美在线 | 成人国产精品 | 日韩三级网 | 中文字幕人妻丝袜二区 | 无码人妻丰满熟妇区毛片18 | 亚洲中文字幕一区二区在线观看 | 福利网站在线观看 | 精品国产乱码久久久久久蜜柚 | 中国一级黄色大片 | 国产网红在线观看 | 美女撒尿无遮挡网站 | 性生活视频在线播放 | 全部免费毛片在线播放 | 成人v | 男女免费毛片 | 日韩av线观看| 国产无毛av | 久久日本精品字幕区二区 | √天堂资源地址在线官网 | 巨大黑人极品videos精品 | 国产精品一区二区三区免费 | 久色成人网 | 国产在线精 | 天天综合久久 | 黄色一级视频在线观看 | 日本一级片免费看 | 熟妇高潮一区二区三区在线播放 | 久国久产久精永久网页 | 欧美www在线观看 | 亚洲精品男女 | 午夜激情福利 | 亚洲天堂色 | 日本在线一区二区 | 538在线精品 | 找av导航 | 国产一区二区精品丝袜 | 国产精品国产三级国产aⅴ无密码 | 麻豆视频在线免费看 | 免费成年人视频在线观看 | 婷婷色婷婷 | 亚洲天堂美女视频 | 8x8ⅹ国产精品一区二区 | 少妇高潮惨叫久久久久 | 丝袜制服影音先锋 | 李丽珍裸体午夜理伦片 | 黑人巨大精品欧美黑白配亚洲 | 日韩作爱 | 海角国产乱辈乱精品视频 | 秋霞黄色片 | 亚洲综合视频一区 | 日韩操操| 好爽又高潮了毛片 | hs网站在线观看 | 日韩日日夜夜 | 男人日女人网站 | 欧美日韩一区二区三区不卡视频 | 久久精品免费一区二区 | 毛片一级免费 | 777米奇影视第四色 五月丁香久久婷婷 | 超碰在线国产 | 一区二区 亚洲 | 久久国产精品偷 | 男生女生操操操 | 欧美日韩精品一区 | 精品久久久亚洲 | 色综合亚洲 | 免费无码av片在线观看 | 国产1区2区在线观看 | 欧美a性| 久草热播 | 色综合久久88色综合天天免费 | 69精品丰满人妻无码视频a片 | 国产精品后入内射日本在线观看 | 日日爱av | 欧美日韩一区二区电影 | 中文字幕91 | 手机av网 | 中文字幕1区2区3区 www.com黄色片 | 免费在线观看中文字幕 | 国产男人的天堂 | 欧美在线天堂 |