HDU6592 Beauty Of Unimodal Sequence

          Beauty Of Unimodal Sequence

          给一个序列,在满足单调递增或者单调递减或者先增后减的最长子序列集合里找到下标字典序最大以及最小的两个子序列,输出这两个子序列里元素的下标。

          n≤3×105

          moomhxy的题解

          先正着求一遍LIS,再反着求一遍LIS,求出每个点作为上升子序列结尾的最大长度和每个点作为下降子序列开头的最大长度。

          我们可以枚举这个单峰序列的峰顶是什么,这样最长长度就找到了。

          然后考虑怎么构造解。

          求字典序最小的话,首先找到第一个顶峰,然后往前找递减的序列中下标较小的,往后就依次找,这样能保证字典序最小。

          如何找这个下标较小的呢?显然我们希望每种结尾长度的点都越靠前越好。所以用单调栈维护即可。

          最大的话找到最后一个顶峰,往前是依次找,往后是找LIS中下标大的。维护方法类似。

          时间复杂度 O(n log n),瓶颈在于求LIS。

          CO int N=300000+10;
          int a[N],dp[N],up[N],down[N];
          int h[N],st[N],ans[N];
          
          void real_main(int n){
              fill(dp,dp+n+1,INT_MAX),dp[0]=0;
              for(int i=1;i<=n;++i){
                  read(a[i]);
                  up[i]=lower_bound(dp+1,dp+n+1,a[i])-dp;
                  dp[up[i]]=a[i];
              }
              fill(dp,dp+n+1,INT_MAX),dp[0]=0;
              for(int i=n;i;--i){
                  down[i]=lower_bound(dp+1,dp+n+1,a[i])-dp;
                  dp[down[i]]=a[i];
              }
              // minimum lexicographic order
              int tot=0;
              int peak=1,height=up[1]+down[1];
              for(int i=2;i<=n;++i)
                  if(up[i]+down[i]>height) peak=i,height=up[i]+down[i];
              int top=0;
              h[up[peak]]=a[peak];
              for(int i=peak-1;i;--i){
                  if(a[i]>=h[up[i]+1]) continue;
                  while(top and up[i]>=up[st[top]]) --top;
                  st[++top]=i;
                  h[up[i]]=a[i];
              }
              for(;top;--top) ans[++tot]=st[top];
              ans[++tot]=peak;
              for(int i=peak+1;i<=n;++i)
                  if(down[i]==down[ans[tot]]-1 and a[i]<a[ans[tot]]) ans[++tot]=i;
              for(int i=1;i<=tot;++i) printf("%d%c",ans[i]," \n"[i==tot]);
              // maximum lexcographic order
              tot=0;
              peak=1,height=up[1]+down[1];
              for(int i=2;i<=n;++i)
                  if(up[i]+down[i]>=height) peak=i,height=up[i]+down[i];
              top=0;
              st[++top]=peak;
              for(int i=peak-1;i;--i)
                  if(up[i]==up[st[top]]-1 and a[i]<a[st[top]]) st[++top]=i;
              for(;top;--top) ans[++tot]=st[top];
              h[down[peak]]=a[peak];
              for(int i=peak+1;i<=n;++i){
                  if(a[i]>=h[down[i]+1]) continue;
                  while(tot and down[i]>=down[ans[tot]]) --tot;
                  ans[++tot]=i;
                  h[down[i]]=a[i];
              }
              for(int i=1;i<=tot;++i) printf("%d%c",ans[i]," \n"[i==tot]);
          }
          int main(){
              for(int n;~scanf("%d",&n);) real_main(n);
              return 0;
          }

          HDU什么时候开始支持<bits/stdc++.h>了……

          相关文章
          相关标签/搜索
          三十码期期必中√资料今晚六给彩开奖结果,白小姐中特玄机,六开彩开奖现场直播,2017开奖记录开奖结果,开马现场直播,马报免费资料2017大全 长岛县| 沂水县| 淮南市| 百色市| 青海省| 陆川县| 安丘市| 太仓市| 高清| 含山县| 定陶县| 石渠县| 修水县| 乌拉特后旗| 凤山县| 侯马市| 仙游县| 博客| 石泉县| 上犹县| 大英县| 嵊州市| 邵东县| 灵丘县| 望城县| 神农架林区| 甘肃省| 澜沧| 洮南市| 邢台市| 曲麻莱县| 德庆县| 新建县| 皮山县| 凌云县| 阜新市| 清丰县| 安宁市| 巴林左旗| 元阳县| 乌鲁木齐市| 和林格尔县| 确山县| 南汇区| 扎鲁特旗| 乌恰县| 贞丰县| 霍邱县| 宝清县| 思南县| 黄浦区| 大理市| 黔西| 来安县| 尤溪县| 巫溪县| 修武县| 友谊县| 鸡东县| 凤山县| 通化市| 宕昌县| 景洪市| 嘉黎县| 小金县| 东至县| 泗水县| 沙洋县| 年辖:市辖区| 武宣县| 渝中区| 双柏县| 股票| 汪清县| 遵义市| 浦城县| 库尔勒市| 吴堡县| 建德市| 祁门县| 吉安市| 河北区| 井冈山市| 会宁县| 汽车| 永顺县| 铜梁县| 嘉祥县| 永安市| 连云港市| 松阳县| 娱乐| 东乡族自治县| 辽阳市| 增城市| 子长县| 扎鲁特旗| 修文县| 宕昌县| 桃园县| 平谷区| 涞源县| 乌鲁木齐县| 黄山市| 高阳县| 县级市| 铜山县| 云林县| 京山县| 贵德县| 西乌珠穆沁旗| 枣阳市| 师宗县| 迁安市| 阿克| 万载县| 长泰县| 广灵县| 灵寿县| 新绛县| 山东| 五寨县| 博罗县| 宿州市| 洪洞县| 澄江县| 五原县| 都江堰市| 天门市| 米易县| 南投市| 五台县| 抚州市| 渑池县| 德化县| 伊通| 舒城县| 拜城县| 华容县| 广汉市| 惠安县| 隆昌县| 乌海市| 扬中市| 柳林县| 曲周县| 满洲里市| 临沧市| 六枝特区| 邯郸县| 冕宁县| 江山市| 望都县| 开封县| 布尔津县| 永兴县| 甘谷县| 伊金霍洛旗| 华坪县| 双江| 英吉沙县| 诸暨市| 砀山县| 界首市| 通许县| 松滋市| 和林格尔县| 定兴县| 紫金县| 长子县| 安仁县| 麟游县| 巨鹿县| 永修县| 蕉岭县| 延长县| 波密县| 皮山县| 灵台县| 大田县| 凉城县| 安多县| 郁南县| 东阳市| 礼泉县| 牡丹江市| 正镶白旗| 清涧县| 偏关县| 山东省| 京山县| 贵阳市| 遵义市| 怀集县| 大冶市| 郁南县| 峨眉山市| 五河县| 廊坊市| 兰州市| 威远县| 安义县| 大化| 高雄县| 凌源市| 洞口县| 姚安县| 屯昌县| 尼木县| 江安县| 定远县| 大宁县| 旬阳县| 谢通门县| 滨海县| 永吉县| 阿勒泰市| 策勒县| 吉林省| 婺源县| 乐业县| 黄大仙区| 梅河口市| 蓬安县| 临武县| 石台县| 霍州市| 徐州市| 二连浩特市| 醴陵市| 漾濞| 合肥市| 曲松县| 大庆市| 怀集县| 绥德县| 潍坊市| 阆中市| 广河县| 离岛区| 多伦县| 清水河县| 彭山县| 阳谷县| 北安市| 游戏| 临颍县| 都江堰市| 阿拉善左旗| 淳安县| 新沂市| 达拉特旗| 林甸县| 西吉县| 桐乡市| 尖扎县| 芮城县| 永清县| 东源县| 德阳市| 洪江市| 新田县| 儋州市| 谷城县| 凤阳县| 武川县| 衡水市| 珲春市| 禄丰县| 阳高县| 即墨市| 隆昌县| 墨江| 琼结县| 隆尧县| 五常市| 天长市| 平度市| 广宗县| 吉木乃县| 峡江县| 积石山| 海兴县| 措美县| 南昌市| 永川市| 富蕴县| 灌云县| 溧水县| 宣城市| 弋阳县| 江门市| 招远市| 藁城市| 教育| 灌阳县| 大洼县| 昭平县| 基隆市| 恩施市| 隆德县| 兴化市| 花垣县| 玉溪市| 江源县| 信阳市| 甘孜县| 马尔康县| 栖霞市| 百色市| 涡阳县| 五大连池市| 滁州市| 方山县| 玛沁县| 仙桃市| 布尔津县| 英超| 独山县| 古交市| 南平市| 林周县| 昌吉市| 绥中县| 乐平市| 登封市| 石台县| 响水县| 宝山区| 微博| 方城县| 江华| 泰来县| 雷波县| 崇文区| 繁昌县| 咸丰县| 那坡县| 百色市| 忻城县| 红安县| 武胜县| 淅川县| 百色市| 鹤壁市| 宁强县| 高唐县| 大港区| 浏阳市| 白玉县| 石柱| 龙井市| 资讯| 临西县| 青岛市| 滨州市| 常宁市| 民权县| 吉安市| 邢台市| 门源| 阜城县| 马关县| 西青区| 什邡市| 如皋市| 元朗区| 新丰县| 佛山市| 化隆| 黄冈市| 南投市| 鄂托克旗| 东安县| 许昌市| 德安县| 静安区| 突泉县| 黄大仙区| 黑龙江省| 霞浦县| 奎屯市| 黔江区| 河曲县| 鲁山县| 青神县| 视频| 北川| 五大连池市| 昌都县| 拉孜县| 五指山市| 静安区| 泗阳县| 多伦县| 万荣县| 晋宁县| 原平市| 天峨县| 万全县| 怀集县| 敦煌市| 高邮市| 潮州市| 镇远县| 上蔡县| 浦城县| 平谷区| 广河县| 民和| 元氏县| 梁平县| 松江区| 娄烦县| 财经| 邹平县| 元阳县| 平陆县| 汝州市| 广宁县| 革吉县| 岢岚县| 壤塘县| 城固县| 新巴尔虎右旗| 高安市| 清徐县| 盐池县| 永修县| 迁西县| 江北区| 东辽县| 井研县| 土默特右旗| 新化县| 乡城县| 洱源县| 皮山县| 高碑店市| 陵水| 清镇市| 丹凤县| 搜索| 巩留县| 雷州市| 孝义市| 亚东县| 登封市| 西贡区| 开封县| 迁安市| 枝江市| 喀什市| 满洲里市| 探索| 文山县| 清新县| 彭阳县| 五家渠市| 东至县| 钟山县| 桓台县| 平度市| 巴林左旗| 呼玛县| 台江县| 盐城市| 格尔木市| 南投市| 寻乌县| 乌兰县| 馆陶县| 宝应县| 富锦市| 枣庄市| 大石桥市| 临夏市| 张掖市| 陕西省| 德保县| 巨野县| 武威市| 开封市| 涪陵区| 宜兰市| 交城县| 辉县市| 土默特右旗| 礼泉县| 宝坻区| 通辽市| 崇礼县| 青铜峡市| 汉寿县| 青州市| 邵武市| 格尔木市| 长岭县| 陈巴尔虎旗| 晋中市| 武山县| 永丰县| 平定县| 临桂县| 马龙县| 博野县| 和林格尔县| 墨脱县| 邢台市| 乌拉特中旗| 临邑县| 武川县| 探索| 什邡市| 靖江市| 高淳县| 曲靖市| 虎林市| 德昌县| 滦南县| 许昌县| 临夏市| 闽侯县| 周口市| 凤山县| 饶平县| 上思县| 汶上县| 沂源县| 静安区| 衡水市| 汾西县| 彰化市| 犍为县| 沅陵县| 兴化市| 华宁县| 福清市| 黄平县| 铁岭县| 天台县| 宁陵县| 临安市| 广德县| 石渠县| 习水县| 罗定市| 云和县| 芷江| 临邑县| 黄大仙区| 霍山县| 沙河市| 电白县| 泗阳县| 巴中市| 屯门区| 武邑县| 瑞金市| 宜兰市| 吴旗县| 泸水县| 普定县| 普宁市| 安阳市| 克山县| 鹤庆县| 福安市| 新平| 襄城县| 崇义县| 肥西县| 贵德县| 文成县| 连州市| 荔波县| 新绛县| 辽阳县| 牡丹江市| 沙河市| 宝山区| 武清区| 馆陶县| 河津市| 房山区| 香港| 二连浩特市| 崇礼县| 钟山县| 衡水市| 新田县| 鸡泽县| 芦溪县| 安化县| 鄯善县| 郎溪县| 丰城市| 内黄县| 静安区| 古田县| 财经| 福泉市| 胶南市| 南开区| 通城县| 精河县| 张家界市| 康马县| 长子县| 都昌县| 方城县| 云南省| 屏东市| 永登县| 广平县| http://www.ctjnnv.fit http://www.nzzcfn.fit http://www.knvbwd.fit http://wap.wigjyo.fit http://wap.tvtawp.fit http://bm1961noisez.fit http://m.dgpizq.fit http://m.kuhtfj.fit http://wap.sfpjcy.fit http://www.cmpobw.fit http://www.ccluei.fit http://m.bm1961xeanz.fit http://m.fhatxe.fit http://wap.jlycry.fit http://wap.ugsvee.fit http://bm1961loanz.fit http://m.sxcbwi.fit http://www.ertnzz.fit