<thead id="lptrh"></thead>

      <sub id="lptrh"></sub>

            <form id="lptrh"></form>
            <sub id="lptrh"></sub>

            <address id="lptrh"></address>
            <sub id="lptrh"></sub>

            <sub id="lptrh"></sub>

              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>了……

              相关文章
              相关标签/搜索
              王中王开奖结果 查2020开奖记录查询结果香港马会开奖结果手机报码现场直播二四六天天好彩免费资料大全历史纪录在线查询网 横山县| 东至县| 株洲县| 常熟市| 甘孜| 陇南市| 金堂县| 万载县| 苍梧县| 海南省| 垦利县| 浏阳市| 卢湾区| 大名县| 巩义市| 石嘴山市| 礼泉县| 漠河县| 揭阳市| 怀来县| 阳朔县| 易门县| 金川县| 临夏县| 乐业县| 灵川县| 抚远县| 海晏县| 青神县| 清流县| 吴忠市| 巴彦淖尔市| 竹北市| 桑植县| 扎囊县| 民丰县| 合阳县| 双柏县| 鹤峰县| 桐庐县| 镇赉县| 札达县| 涡阳县| 云安县| 东港市| 瑞金市| 临颍县| 壤塘县| 遵化市| 新民市| 长春市| 景泰县| 晴隆县| 青浦区| 星座| 谢通门县| 康乐县| 扶余县| 攀枝花市| 达拉特旗| 惠安县| 周宁县| 文成县| 通州区| 安泽县| 比如县| 正阳县| 甘孜| 南丹县| 松桃| 胶州市| 岳西县| 南乐县| 班玛县| 尼玛县| 江孜县| 阿克苏市| 张家港市| 金门县| 深水埗区| 克什克腾旗| 玉屏| 三都| 尼玛县| 高邑县| 永春县| 新和县| 荃湾区| 三河市| 酒泉市| 永定县| 临夏县| 株洲市| 霍林郭勒市| 岢岚县| 长顺县| 双辽市| 柳江县| 策勒县| 五峰| 宝山区| 海林市| 新昌县| 泊头市| 九江市| 馆陶县| 古蔺县| 扎赉特旗| 如皋市| 囊谦县| 天门市| 祁连县| 晋州市| 五常市| 分宜县| 龙岩市| 本溪市| 河北区| 玛曲县| 安阳县| 井陉县| 佛山市| 都安| 兴城市| 建平县| 孝昌县| 沂水县| 长丰县| 鄂托克旗| 平江县| 于都县| 满洲里市| 宣威市| 登封市| 仙居县| 边坝县| 东光县| 肇东市| 衡阳县| 邵阳市| 紫金县| 桐城市| 栾川县| 建阳市| 定陶县| 贺州市| 社旗县| 阜城县| 防城港市| 临湘市| 永宁县| 马鞍山市| 台东市| 南京市| 南皮县| 鄂尔多斯市| 丹阳市| 东港市| 广河县| 施甸县| 灌南县| 宁陕县| 缙云县| 鹿邑县| 宜阳县| 集安市| 东源县| 大关县| 图木舒克市| 大埔区| 秦安县| 曲沃县| 宁武县| 晋宁县| 闽侯县| 陵水| 杂多县| 通榆县| 葵青区| 丹阳市| 留坝县| 乐都县| 温州市| 十堰市| 泸州市| 含山县| 博客| 赣州市| 唐山市| 乌鲁木齐县| 叶城县| 麻城市| 略阳县| 乌拉特前旗| 盘山县| 乡城县| 乐业县| 得荣县| 宜宾县| 黄大仙区| 章丘市| 云浮市| 邹城市| 鄢陵县| 阿拉善左旗| 阿拉尔市| 北辰区| 太康县| 右玉县| 绥中县| 辽阳市| 天台县| 乌拉特后旗| 怀宁县| 绥中县| 鸡东县| 通辽市| 灵武市| 通道| 古丈县| 宝清县| 丰都县| 镶黄旗| 来凤县| 昔阳县| 乌兰浩特市| 电白县| 革吉县| 察雅县| 无极县| 保德县| 石泉县| 玉环县| 行唐县| 灌阳县| 漠河县| 梓潼县| 西青区| 华坪县| 博兴县| 大渡口区| 长武县| 鹿泉市| 浙江省| 休宁县| 衡山县| 汉川市| 阜平县| 哈密市| 甘南县| 清水县| 淮安市| 丘北县| 囊谦县| 永丰县| 北碚区| 洛隆县| 玛多县| 酉阳| 乌恰县| 马公市| 修文县| 福清市| 鄂温| 镇沅| 兰坪| 新竹县| 永兴县| 平凉市| 宁武县| 唐海县| 五原县| 汉中市| 紫金县| 安龙县| 广宁县| 鄄城县| 隆化县| 那曲县| 仙桃市| 抚顺县| 原阳县| 察隅县| 唐海县| 德惠市| 松溪县| 江安县| 高州市| 雷州市| 昌江| 尤溪县| 通榆县| 玛纳斯县| 青田县| 潞城市| 洛南县| 阿拉善左旗| 策勒县| 东丰县| 永新县| 定日县| 东丽区| 阿城市| 邯郸市| 申扎县| 淄博市| 营口市| 县级市| 平阴县| 台湾省| 邵阳县| 高平市| 会同县| 仙居县| 江孜县| 浮山县| 丹阳市| 大余县| 栖霞市| 获嘉县| 惠安县| 凌源市| 阿合奇县| 同江市| 林芝县| 镇平县| 行唐县| 长沙县| 亚东县| 大石桥市| 张家口市| 乡城县| 探索| 封开县| 山东省| 曲沃县| 浮山县| 若尔盖县| 中方县| 寿光市| 沙雅县| 万州区| 武川县| 胶州市| 彭山县| 玛纳斯县| 阿拉尔市| 江油市| 定南县| 盖州市| 长乐市| 土默特右旗| 海宁市| 长治县| 咸宁市| 泾源县| 郑州市| 日土县| 嫩江县| 安化县| 马尔康县| 墨脱县| 都安| 莆田市| 漳平市| 丽水市| 九台市| 蛟河市| 开江县| 安仁县| 丰镇市| 关岭| 文化| 大同县| 章丘市| 贡嘎县| 财经| 潮州市| 太白县| 加查县| 三原县| 琼海市| 张家界市| 三河市| 宝坻区| 湄潭县| 公安县| 久治县| 四平市| 砀山县| 上林县| 怀仁县| 嘉禾县| 临武县| 德阳市| 昭觉县| 来宾市| 长春市| 华坪县| 海宁市| 陕西省| 沈阳市| 长葛市| 长治县| 宁陵县| 葵青区| 安图县| 江山市| 成武县| 临武县| 浙江省| 文安县| 丰镇市| 台南县| 云南省| 分宜县| 尼勒克县| 梨树县| 黄龙县| 盐山县| 溆浦县| 泾川县| 石楼县| 台安县| 土默特左旗| 偃师市| 佳木斯市| 图片| 恩平市| 垣曲县| 丹凤县| 洛宁县| 五大连池市| 江城| 沈阳市| 秭归县| 左权县| 兰考县| 搜索| 定西市| 洮南市| 简阳市| 白玉县| 仁化县| 南昌县| 浏阳市| 南通市| 阳曲县| 益阳市| 车致| 四平市| 阳朔县| 环江| 永寿县| 泾川县| 东阳市| 扎赉特旗| 漳浦县| 安阳市| 苍南县| 奉化市| 唐山市| 广河县| 武平县| 盈江县| 托克托县| 长沙市| 治多县| 巫溪县| 前郭尔| 阜平县| 鹰潭市| 郧西县| 清镇市| 六枝特区| 奉化市| 通州区| 海丰县| 盱眙县| 兴海县| 阜新市| 平江县| 博湖县| 庄河市| 仙居县| 祁东县| 商水县| 万载县| 铅山县| 赣榆县| 安福县| 肥乡县| 日土县| 改则县| 宁远县| 黑山县| 津市市| 东光县| 兴山县| 西宁市| 东乌珠穆沁旗| 三亚市| 新绛县| 滨海县| 金华市| 长兴县| 夹江县| 建瓯市| 酒泉市| 渑池县| 社会| 万年县| 同心县| 洪湖市| 台南市| 宝山区| 大丰市| 枣庄市| 潍坊市| 郓城县| 巴东县| 芮城县| 房产| 曲靖市| 商城县| 绥棱县| 阿坝| 崇阳县| 雅安市| 西贡区| 饶河县| 怀化市| 友谊县| 新乡县| 蒲城县| 博客| 仪陇县| 堆龙德庆县| 苗栗市| 靖远县| 三都| 南召县| 江阴市| 石河子市| 万年县| 林周县| 安溪县| 昭苏县| 鞍山市| 顺昌县| 武穴市| 崇州市| 浏阳市| 瑞昌市| 昆山市| 绥芬河市| 长治市| 昂仁县| 会昌县| 专栏| 灌云县| 潮安县| 佛教| 五大连池市| 大港区| 淳安县| 伊川县| 舟山市| 雷州市| 休宁县| 乾安县| 扎兰屯市| 天气| 志丹县| 延长县| 武宣县| 瑞昌市| 出国| 迭部县| 漳州市| 耒阳市| 吉木乃县| 黄浦区| 保靖县| 池州市| 济源市| 武城县| 石柱| 无为县| 青阳县| 汉沽区| 昔阳县| 远安县| 石渠县| 太保市| 焦作市| 云和县| 越西县| 娄底市| 和政县| 江津市| 五莲县| 乌什县| 陈巴尔虎旗| 昭苏县| 邢台市| 陵川县| 垣曲县| 汽车| 景泰县| 贵德县| 桂平市| 宿州市| 维西| 绥江县| http://wap.jx1870leadv.fun http://m.jx1870hopv.fun http://www.jx1870hearv.fun http://www.jx1870inputv.fun http://wap.hz0j3r9vo.fun http://hz0j1r4vo.fun http://www.jx1870hopv.fun http://hz0j1r4vo.fun http://m.jx1870frenchv.fun http://wap.hz0j3r6vo.fun http://m.jx1870filzv.fun http://m.jx1870guaranteev.fun http://www.hz0j1r6vo.fun http://www.jx1870fatherv.fun http://m.jx1870fortv.fun http://m.jx1870farzv.fun http://jx1870havev.fun http://jx1870giftv.fun