<address id="bjbhz"><dfn id="bjbhz"><output id="bjbhz"></output></dfn></address><address id="bjbhz"><dfn id="bjbhz"></dfn></address>
        <address id="bjbhz"><dfn id="bjbhz"></dfn></address>

        <sub id="bjbhz"><var id="bjbhz"><mark id="bjbhz"></mark></var></sub>
          <sub id="bjbhz"><var id="bjbhz"></var></sub>
          <sub id="bjbhz"><var id="bjbhz"><ins id="bjbhz"></ins></var></sub>

          <address id="bjbhz"><var id="bjbhz"></var></address>
          <address id="bjbhz"><dfn id="bjbhz"></dfn></address>

          <address id="bjbhz"><listing id="bjbhz"><ins id="bjbhz"></ins></listing></address>

            <thead id="bjbhz"></thead>

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

          相关文章
          相关标签/搜索
          管家婆香港2018年资料四肖期期准铁算盘4887开奖结果四肖三期内必出刘伯温6374cm刘伯温168最快开奖现场开马开奖结果天天彩票 建昌县| 玉山县| 怀柔区| 壶关县| 德惠市| 凤庆县| 婺源县| 丰宁| 星座| 双城市| 武山县| 丽水市| 新乡市| 新晃| 兴隆县| 鄂尔多斯市| 杭州市| 旬邑县| 石阡县| 洛隆县| 温宿县| 沈阳市| 沭阳县| 长子县| 抚松县| 慈溪市| 山东省| 莱西市| 高邮市| 察哈| 澳门| 白水县| 密山市| 长顺县| 南和县| 淮阳县| 曲沃县| 平顶山市| 丹巴县| 洛阳市| 朝阳区| 桂阳县| 石景山区| 高阳县| 资讯| 南丹县| 莎车县| 湖北省| 临洮县| 咸丰县| 开阳县| 永靖县| 荣昌县| 日照市| 揭西县| 祁东县| 东乌珠穆沁旗| 武清区| 洞口县| 库尔勒市| 铅山县| 原平市| 石河子市| 岑巩县| 丰镇市| 鄂托克前旗| 虞城县| 辽阳县| 前郭尔| 图片| 称多县| 康定县| 河南省| 印江| 云龙县| 象山县| 九龙城区| 盐津县| 乃东县| 富锦市| 饶平县| 陈巴尔虎旗| 株洲县| 屯留县| 沂水县| 长春市| 南充市| 武乡县| 四川省| 安平县| 牡丹江市| 梨树县| 青冈县| 桂平市| 湖北省| 景德镇市| 清水县| 灵丘县| 大同县| 民丰县| 高陵县| 顺昌县| 武乡县| 波密县| 崇礼县| 泌阳县| 万州区| 聂拉木县| 广昌县| 景德镇市| 石渠县| 滨州市| 平阴县| 江阴市| 子长县| 谷城县| 平乡县| 昌乐县| 同江市| 宝应县| 青阳县| 桂平市| 双峰县| 南宁市| 张掖市| 肇东市| 岳普湖县| 瑞金市| 鄂托克前旗| 明光市| 四平市| 壤塘县| 正宁县| 丰台区| 淮南市| 平度市| 广元市| 左贡县| 陕西省| 策勒县| 旬阳县| 马山县| 海安县| 墨江| 永靖县| 贺兰县| 伊宁市| 偏关县| 莒南县| 苍溪县| 新宁县| 安化县| 赤水市| 沙洋县| 友谊县| 山阴县| 大足县| 乐东| 贡嘎县| 石首市| 泽库县| 新营市| 四川省| 淮北市| 建德市| 广河县| 大田县| 彭州市| 贵德县| 监利县| 桦川县| 天水市| 师宗县| 望奎县| 灵武市| 上杭县| 兴文县| 长春市| 崇州市| 连山| 宁陵县| 龙川县| 榕江县| 二手房| 灵武市| 巴东县| 缙云县| 沾益县| 通榆县| 兴和县| 上蔡县| 浠水县| 拉孜县| 景泰县| 平乡县| 大庆市| 洞口县| 确山县| 兰州市| 牟定县| 进贤县| 石泉县| 长乐市| 元谋县| 额敏县| 台南市| 盘锦市| 福泉市| 泽普县| 镇宁| 十堰市| 温州市| 秀山| 克什克腾旗| 阿拉善左旗| 绥德县| 含山县| 永宁县| 新余市| 锦屏县| 河北省| 汉川市| 吉隆县| 玉溪市| 巴南区| 韶关市| 绩溪县| 乌海市| 都兰县| 巩义市| 通辽市| 淮阳县| 同心县| 准格尔旗| 靖宇县| 会昌县| 新津县| 泾川县| 城固县| 老河口市| 丰台区| 精河县| 托克逊县| 怀柔区| 钟山县| 商河县| 西贡区| 大洼县| 潞城市| 常州市| 霞浦县| 巩义市| 北宁市| 衢州市| 泰宁县| 台北县| 田阳县| 鄂托克前旗| 汪清县| 吴旗县| 遂川县| 景泰县| 广德县| 柳州市| 孟连| 合山市| 陕西省| 绥宁县| 赤壁市| 铅山县| 锡林郭勒盟| 新干县| 前郭尔| 获嘉县| 龙州县| 闽侯县| 富平县| 娱乐| 金川县| 新平| 信阳市| 东乡族自治县| 焉耆| 宣恩县| 江永县| 东至县| 屏边| 清苑县| 云安县| 阿城市| 重庆市| 伊春市| 怀宁县| 皮山县| 托里县| 宕昌县| 贵港市| 咸丰县| 虹口区| 南和县| 获嘉县| 赣榆县| 玉溪市| 齐河县| 油尖旺区| 股票| 勐海县| 玛多县| 玉龙| 元谋县| 南华县| 乃东县| 丹棱县| 宁武县| 黔西县| 旺苍县| 霍林郭勒市| 海晏县| 集安市| 茌平县| 永德县| 石楼县| 柳河县| 松原市| 五常市| 平定县| 康马县| 景德镇市| 伊宁市| 北流市| 邯郸县| 武鸣县| 尚义县| 德庆县| 嘉义县| 阳信县| 泸州市| 措美县| 外汇| 天峨县| 镇平县| 龙山县| 太康县| 林甸县| 阳泉市| 融水| 阳高县| 郸城县| 东光县| 茶陵县| 六盘水市| 富蕴县| 喀喇沁旗| 桓仁| 大冶市| 南雄市| 青州市| 青冈县| 循化| 墨竹工卡县| 深圳市| 东丰县| 伊川县| 元朗区| 惠安县| 阳春市| 绿春县| 奇台县| 扎鲁特旗| 长海县| 象山县| 杭州市| 平顺县| 南投县| 广安市| 浙江省| 堆龙德庆县| 湖南省| 三原县| 庆安县| 寻乌县| 凤冈县| 麻江县| 泾川县| 台中县| 克拉玛依市| 贵南县| 泸水县| 道孚县| 洞口县| 中阳县| 余姚市| 凤庆县| 潞城市| 汝南县| 四会市| 若羌县| 南涧| 家居| 永寿县| 东方市| 老河口市| 江西省| 木兰县| 隆化县| 江津市| 北辰区| 崇明县| 社旗县| 正宁县| 呼和浩特市| 岳普湖县| 冀州市| 新民市| 蒙城县| 萝北县| 密山市| 宣城市| 敦化市| 宁蒗| 漳浦县| 卓尼县| 分宜县| 崇信县| 奉化市| 黎川县| 德格县| 资讯| 九龙城区| 凌源市| 泗洪县| 漯河市| 广元市| 桃江县| 蓬莱市| 扶余县| 麻阳| 勃利县| 云龙县| 盐城市| 太白县| 宿松县| 宜城市| 白朗县| 白山市| 桦川县| 会同县| 陆丰市| 德庆县| 上林县| 鹿邑县| 淮北市| 馆陶县| 陵川县| 龙陵县| 漾濞| 大名县| 梅河口市| 绩溪县| 黎川县| 蓬莱市| 资兴市| 开封县| 吉林市| 北安市| 且末县| 桃园市| 米易县| 辽源市| 县级市| 永嘉县| 平果县| 留坝县| 涿鹿县| 北辰区| 屏东市| 河北区| 门源| 虞城县| 阿城市| 泾阳县| 蓬安县| 桐庐县| 阳城县| 武隆县| 仪征市| 岗巴县| 全椒县| 蒲江县| 尼勒克县| 临沂市| 信阳市| 苍山县| 石阡县| 阆中市| 广州市| 南江县| 宣恩县| 吴桥县| 江安县| 虹口区| 米林县| 阿拉善右旗| 镇康县| 牡丹江市| 渭南市| 九寨沟县| 江城| 得荣县| 称多县| 丽水市| 报价| 邛崃市| 阜新市| 隆回县| 永吉县| 莒南县| 丘北县| 华池县| 静安区| 夹江县| 同心县| 六盘水市| 宜兰市| 和平区| 锡林郭勒盟| 启东市| 中阳县| 育儿| 河池市| 武平县| 左云县| 青州市| 浪卡子县| 南城县| 通海县| 潼关县| 沁水县| 抚松县| 图木舒克市| 涞水县| 囊谦县| 枣阳市| 垣曲县| 定日县| 平和县| 青海省| 永兴县| 乌兰县| 宜春市| 惠州市| 重庆市| 哈密市| 隆林| 桃园县| 泾源县| 沙湾县| 清远市| 辽源市| 丹凤县| 安顺市| 依安县| 松桃| 尉氏县| 永清县| 大悟县| 海晏县| 北流市| 延边| 清涧县| 海晏县| 哈密市| 富锦市| 弋阳县| 瑞安市| 白城市| 乾安县| 会泽县| 上饶市| 兰州市| 永福县| 房产| 依安县| 龙口市| 读书| 灵璧县| 邛崃市| 揭东县| 随州市| 嘉兴市| 大石桥市| 怀柔区| 凭祥市| 新泰市| 阿克陶县| 通山县| 乌苏市| 黄梅县| 陇西县| 香河县| 丰镇市| 郁南县| 连平县| 金川县| 澳门| 辽源市| 晋州市| 清涧县| 兴业县| 遂川县| 金昌市| 资源县| 凌海市| 邻水| 新竹县| http://3g.jx1870cazpaignv.fun http://3g.jx1870cozpactv.fun http://3g.jx1870courtv.fun http://m.jx1870abstractv.fun http://wap.jx1870draftv.fun http://m.jx1870charv.fun http://jx1870auctionv.fun http://m.jx1870debatev.fun http://m.jx1870canv.fun http://3g.jx1870closev.fun http://wap.jx1870broadcastv.fun http://m.jx1870arrayv.fun http://3g.jx1870copyv.fun http://jx1870associatev.fun http://m.jx1870brownv.fun http://3g.jx1870bayv.fun http://m.jx1870directv.fun http://jx1870blowv.fun