<address id="nd1x7"></address>
        <address id="nd1x7"></address>

              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,一肖一主一码2017,香港马会资料一肖中特1 罗甸县| 疏附县| 南充市| 梓潼县| 加查县| 杭州市| 玉林市| 台南县| 永福县| 衡山县| 八宿县| 彭水| 扎囊县| 黄平县| 夏邑县| 金华市| 民乐县| 长岛县| 棋牌| 襄樊市| 屏东县| 新乡市| 平塘县| 府谷县| 六盘水市| 江源县| 漳州市| 荥阳市| 建德市| 淮南市| 昆山市| 天峻县| 绥宁县| 长治县| 桦南县| 资兴市| 南投县| 广德县| 九龙县| 会泽县| 扬中市| 襄樊市| 靖西县| 临邑县| 莱西市| 九江县| 温州市| 晴隆县| 灌南县| 怀化市| 石嘴山市| 拉孜县| 白河县| 内丘县| 兴城市| 虹口区| 安吉县| 阿拉善左旗| 海宁市| 鄂尔多斯市| 祁阳县| 西乌| 女性| 边坝县| 常州市| 蓬安县| 神池县| 汝州市| 岑巩县| 赫章县| 浪卡子县| 扎鲁特旗| 安阳县| 沅陵县| 淮安市| 体育| 奉化市| 柞水县| 敖汉旗| 景泰县| 江陵县| 射洪县| 景德镇市| 乌鲁木齐市| 井冈山市| 隆尧县| 蓬溪县| 黔东| 潞西市| 高邮市| 石城县| 屏南县| 湾仔区| 微山县| 重庆市| 凤山县| 余庆县| 延边| 登封市| 茶陵县| 五大连池市| 库伦旗| 白银市| 青龙| 和田县| 宁明县| 侯马市| 定南县| 安仁县| 宁晋县| 武穴市| 嘉黎县| 富裕县| 民权县| 晋江市| 肥东县| 苏尼特右旗| 沙坪坝区| 河北省| 称多县| 左贡县| 宜黄县| 共和县| 资阳市| 奇台县| 江阴市| 孟村| 长垣县| 汕尾市| 色达县| 丰都县| 浪卡子县| 永清县| 乌鲁木齐市| 顺平县| 互助| 高青县| 达拉特旗| 阆中市| 太原市| 修武县| 开江县| 奉节县| 裕民县| 玛纳斯县| 兴文县| 岑溪市| 嘉鱼县| 诸城市| 襄城县| 西华县| 建德市| 大石桥市| 临湘市| 太原市| 遂川县| 巴里| 昆明市| 辽阳市| 灌南县| 临猗县| 安图县| 穆棱市| 鄂尔多斯市| 和静县| 栖霞市| 宜兴市| 巍山| 广平县| 常宁市| 南投县| 哈尔滨市| 通化市| 甘洛县| 正阳县| 章丘市| 章丘市| 全南县| 封丘县| 鄢陵县| 邹平县| 罗田县| 江门市| 定州市| 深圳市| 舟曲县| 嵊泗县| 昌都县| 文安县| 炎陵县| 翁牛特旗| 青川县| 威宁| 辽中县| 财经| 饶河县| 股票| 临清市| 奈曼旗| 波密县| 安仁县| 娱乐| 屏东县| 巴彦淖尔市| 繁昌县| 成武县| 新化县| 陆川县| 汨罗市| 饶平县| 阿勒泰市| 青州市| 正安县| 辰溪县| 临海市| 通海县| 新宁县| 新宾| 玉龙| 喀喇沁旗| 资讯| 黄骅市| 缙云县| 遂宁市| 金塔县| 宁夏| 庄浪县| 榆树市| 西城区| 五峰| 滨州市| 太原市| 太原市| 西充县| 双城市| 十堰市| 嘉禾县| 西乡县| 门头沟区| 工布江达县| 清徐县| 依兰县| 桦川县| 玛纳斯县| 大渡口区| 交城县| 华容县| 新沂市| 青川县| 赞皇县| 连江县| 常宁市| 镇坪县| 乌拉特中旗| 蓝山县| 林周县| 天祝| 伊春市| 吴江市| 彭泽县| 什邡市| 永泰县| 苏州市| 锡林郭勒盟| 四平市| 隆子县| 徐汇区| 萨嘎县| 涞源县| 金溪县| 喀喇| 翁牛特旗| 东丰县| 东海县| 九江县| 桂林市| 略阳县| 洪雅县| 微山县| 屯门区| 泸州市| 广东省| 满城县| 慈利县| 涿鹿县| 禹州市| 恩平市| 清涧县| 兴海县| 古交市| 奇台县| 贡嘎县| 中方县| 宝清县| 黄平县| 衡阳市| 呼玛县| 会东县| 舞钢市| 金山区| 昭通市| 富川| 琼结县| 乌兰察布市| 延寿县| 安达市| 固镇县| 洪江市| 邓州市| 涟源市| 大石桥市| 遵义县| 泰安市| 新竹市| 徐闻县| 丹东市| 林州市| 安塞县| 略阳县| 精河县| 平凉市| 云和县| 望谟县| 达州市| 东源县| 即墨市| 五大连池市| 潍坊市| 吉林市| 龙里县| 黑龙江省| 灌南县| 屯门区| 周口市| 师宗县| 额尔古纳市| 米易县| 唐海县| 原平市| 东乡县| 砀山县| 漳州市| 宣化县| 五家渠市| 鹰潭市| 丹江口市| 桂东县| 廊坊市| 温州市| 泸西县| 临洮县| 鲁山县| 汝城县| 西吉县| 昌平区| 桦甸市| 益阳市| 平果县| 宁乡县| 五指山市| 邵阳县| 五原县| 旬阳县| 建湖县| 海口市| 抚松县| 思茅市| 同江市| 井冈山市| 宜章县| 长丰县| 安福县| 通海县| 水城县| 红安县| 保康县| 龙里县| 凤山县| 青岛市| 娱乐| 常熟市| 金沙县| 屯留县| 浦北县| 永济市| 商水县| 安顺市| 谢通门县| 仁寿县| 洛扎县| 礼泉县| 五家渠市| 梧州市| 宁都县| 江源县| 阿克| 徐州市| 天津市| 团风县| SHOW| 五台县| 齐河县| 松潘县| 共和县| 桓仁| 蓬溪县| 自治县| 子洲县| 彝良县| 惠州市| 抚顺市| 保亭| 呼玛县| 澄城县| 尤溪县| 博客| 河东区| 隆化县| 南涧| 民乐县| 吴忠市| 乃东县| 灵川县| 化州市| 芜湖县| 唐海县| 万宁市| 五台县| 中卫市| 余姚市| 吴忠市| 上虞市| 陆川县| 万荣县| 元氏县| 塔河县| 扶沟县| 盐边县| 洛隆县| 越西县| 潮州市| 桃江县| 石台县| 石林| 九江市| 民和| 汾西县| 河池市| 东海县| 乌什县| 溧阳市| 林芝县| 军事| 冕宁县| 台南市| 西乌珠穆沁旗| 太和县| 广水市| 林口县| 绥芬河市| 万荣县| 凤山市| 青海省| 枣庄市| 承德市| 崇信县| 洛阳市| 翁牛特旗| 师宗县| 白城市| 邛崃市| 阜新| 体育| 神木县| 泾川县| 安多县| 织金县| 会泽县| 廉江市| 庐江县| 灌南县| 农安县| 凤庆县| 江陵县| 马公市| 新泰市| 灯塔市| 沛县| 拜泉县| 五常市| 庆安县| 象山县| 明水县| 苏尼特左旗| 崇明县| 喀喇沁旗| 霸州市| 和政县| 长葛市| 大姚县| 会昌县| 维西| 灵丘县| 宣城市| 临沧市| 五台县| 武城县| 邵阳市| 新郑市| 建德市| 嘉祥县| 鹿邑县| 临朐县| 黎川县| 大连市| 天津市| 聂荣县| 洛阳市| 舟曲县| 永安市| 治多县| 睢宁县| 阳江市| 静宁县| 集安市| 玉山县| 保靖县| 平远县| 浠水县| 商丘市| 招远市| 莱西市| 永修县| 南京市| 哈密市| 皋兰县| 新田县| 迁安市| 江津市| 伊通| 仙桃市| 綦江县| 比如县| 萨迦县| 隆德县| 墨竹工卡县| 门头沟区| 昌吉市| 汶川县| 五河县| 巴彦淖尔市| 察雅县| 克什克腾旗| 额尔古纳市| 阿合奇县| 临海市| 云梦县| 栾城县| 颍上县| 孝昌县| 神农架林区| 舞钢市| 衡山县| 仁化县| 宁都县| 浮山县| 祁连县| 安塞县| 西峡县| 太和县| 陵水| 公主岭市| 来凤县| 佛坪县| 万荣县| 仙游县| 开化县| 绥德县| 宝鸡市| 河池市| 来凤县| 嘉荫县| 乌海市| 孟村| 乳山市| 盐山县| 丰都县| 霍林郭勒市| 漾濞| 鸡泽县| 青阳县| 德江县| 湟源县| 松江区| 清流县| 安阳县| 平远县| 宜都市| 玉林市| 博罗县| 原阳县| 辽宁省| 宾阳县| 正蓝旗| 丹寨县| 中方县| 宝应县| 韶山市| 阿合奇县| 固始县| 三台县| 台中县| 辽阳县| 丰城市| 井冈山市| http://wap.ucqrfk.fit http://m.iejtdp.fit http://wap.xhkley.fit http://www.wmzwsj.fit http://m.osmdha.fit http://m.nolxax.fit http://wap.qktctx.fit http://wap.iquthx.fit http://bm1961xotionz.fit http://m.kgvrhu.fit http://www.jjvgqc.fit http://m.wqqttw.fit http://www.ojscti.fit http://m.ffxode.fit http://www.gzeqzo.fit http://m.acudic.fit http://www.xkczbr.fit http://m.owddev.fit