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

    相关文章
    相关标签/搜索
    一,肖一码′期期准2019年香港马会开码结果直播 开奖结果现场历史记录资料查询香港开马开奖现场直播网香港2019开奖结果 德化县| 克什克腾旗| 丁青县| 武功县| 平泉县| 高唐县| 武强县| 博罗县| 饶平县| 巴东县| 轮台县| 江西省| 青浦区| 扎赉特旗| 霍邱县| 平遥县| 富民县| 聊城市| 施秉县| 鸡泽县| 闽清县| 上饶县| 虞城县| 凌源市| 凤庆县| 祁阳县| 云梦县| 秦皇岛市| 鲜城| 邯郸县| 文化| 海晏县| 巨鹿县| 怀安县| 秦皇岛市| 水富县| 彭州市| 会理县| 乐业县| 桃园县| 大新县| 芦山县| 苏尼特右旗| 阿图什市| 丹巴县| 临沧市| 台北县| 吴桥县| 墨玉县| 铜川市| 盈江县| 张家港市| 井冈山市| 林甸县| 康乐县| 班玛县| 延津县| 托里县| 青田县| 阿巴嘎旗| 喜德县| 锦屏县| 墨竹工卡县| 黄大仙区| 静乐县| 新巴尔虎右旗| 江都市| 广平县| 浦县| 济南市| 嘉黎县| 修文县| 攀枝花市| 鞍山市| 天津市| 盘山县| 阳东县| 观塘区| 射洪县| 青冈县| 宜宾县| 团风县| 习水县| 宜城市| 天峻县| 磴口县| 鄂托克前旗| 钟祥市| 西峡县| 博白县| 杭锦后旗| 海安县| 抚宁县| 普宁市| 招远市| 喜德县| 陈巴尔虎旗| 资兴市| 东莞市| 泽普县| 特克斯县| 广昌县| 宝山区| 昌图县| 筠连县| 新邵县| 友谊县| 古浪县| 夏津县| 定边县| 洮南市| 东宁县| 纳雍县| 呈贡县| 瓦房店市| 石嘴山市| 天气| 车致| 黑水县| 舟山市| 库尔勒市| 介休市| 筠连县| 德令哈市| 黄龙县| 永和县| 全椒县| 庐江县| 石城县| 潼南县| 昭觉县| 青田县| 中江县| 曲周县| 井冈山市| 丹凤县| 太和县| 义马市| 察隅县| 稻城县| 八宿县| 丁青县| 陇川县| 广东省| 武城县| 寻乌县| 石屏县| 旬邑县| 获嘉县| 肇源县| 辉县市| 望谟县| 拜城县| 嫩江县| 北流市| 田林县| 遂宁市| 通海县| 吴忠市| 繁峙县| 疏附县| 永州市| 江源县| 法库县| 长武县| 淮阳县| 肥乡县| 芜湖市| 化州市| 黔江区| 乌兰县| 吉林省| 民权县| 蓬莱市| 当涂县| 开原市| 喀喇| 鄂托克旗| 大庆市| 增城市| 黎平县| 万全县| 新泰市| 绥阳县| 盐津县| 安平县| 芷江| 肃宁县| 剑川县| 当雄县| 凤阳县| 威宁| 宜良县| 泗阳县| 麻栗坡县| 铜梁县| 永德县| 内丘县| 寿宁县| 华安县| 湄潭县| 平塘县| 尤溪县| 通榆县| 大余县| 新晃| 敖汉旗| 自贡市| 城市| 宜宾县| 屏边| 乌兰县| 松阳县| 绥化市| 仙游县| 吉林省| 崇信县| 德江县| 三河市| 噶尔县| 内乡县| 托克托县| 龙游县| 江城| 门源| 嵊泗县| 无锡市| 德清县| 南靖县| 宁德市| 德清县| 舒城县| 浮梁县| 东辽县| 大名县| 托里县| 淮安市| 民乐县| 玉山县| 兴义市| 库车县| 铜山县| 塔河县| 鸡西市| 丰镇市| 平顺县| 高唐县| 祁阳县| 全南县| 措勤县| 河南省| 灵丘县| 平利县| 威海市| 迁西县| 河曲县| 富顺县| 吉木乃县| 洛扎县| 岐山县| 连州市| 龙南县| 佛学| 尚志市| 莎车县| 辽中县| 绿春县| 林甸县| 山丹县| 浮山县| 长汀县| 屏山县| 长岭县| 安远县| 信宜市| 靖安县| 枝江市| 固始县| 屯留县| 蒲城县| 淮南市| 遵化市| 茶陵县| 宣武区| 镇赉县| 贡觉县| 兴和县| 双辽市| 枣庄市| 新津县| 黄梅县| 滕州市| 华宁县| 荣成市| 镇原县| 遂平县| 曲阳县| 通海县| 金山区| 潞西市| 太仆寺旗| 盐池县| 正镶白旗| 铁力市| 收藏| 开阳县| 高青县| 民和| 元阳县| 博兴县| 马边| 和平区| 江安县| 长子县| 宜都市| 通海县| 平泉县| 磐安县| 铜陵市| 大庆市| 鄂托克前旗| 成武县| 广东省| 通榆县| 英吉沙县| 来安县| 黄平县| 凉城县| 饶平县| 东乌| 兴安县| 洪雅县| 恩平市| 红河县| 淳化县| 武胜县| 松滋市| 虎林市| 馆陶县| 江油市| 无棣县| 张北县| 天峨县| 新闻| 镶黄旗| 会同县| 黔西县| 鸡泽县| 桂平市| 前郭尔| 西贡区| 天津市| 河池市| 余姚市| 鄂尔多斯市| 德兴市| 湖州市| 察隅县| 建德市| 自治县| 杂多县| 玉屏| 阜康市| 含山县| 浦东新区| 洛川县| 呈贡县| 凌云县| 大田县| 苗栗县| 翁源县| 休宁县| 鄂托克旗| 岫岩| 鸡西市| 南澳县| 保定市| 巨野县| 榆中县| 富阳市| 旌德县| 南丹县| 泉州市| 三河市| 宜川县| 嘉黎县| 英山县| 东台市| 永川市| 兴城市| 稻城县| 阿拉善左旗| 黔江区| 泾源县| 景宁| 兴海县| 静乐县| 金华市| 禹州市| 通州区| 攀枝花市| 新干县| 宝清县| 台北县| 广饶县| 屏东市| 枝江市| 吴旗县| 旬阳县| 安平县| 桐庐县| 兖州市| 卫辉市| 乐陵市| 准格尔旗| 凤山市| 陇川县| 陆河县| 巴彦县| 平安县| 托里县| 阜宁县| 东安县| 怀仁县| 会宁县| 黄梅县| 吴旗县| 宁南县| 栖霞市| 巨鹿县| 舟曲县| 平阴县| 浪卡子县| 松桃| 沙雅县| 扎兰屯市| 泰来县| 淮南市| 体育| 林州市| 建湖县| 峨眉山市| 朝阳县| 安仁县| 肥城市| 龙井市| 西吉县| 北海市| 沧源| 弥勒县| 临汾市| 武安市| 镇赉县| 永康市| 安远县| 德惠市| 黄龙县| 横峰县| 高尔夫| 凤翔县| 新建县| 丹凤县| 潍坊市| 车致| 如皋市| 巩义市| 宣恩县| 贵溪市| 孟州市| 鸡东县| 兰西县| 垣曲县| 高阳县| 兴安盟| 石林| 宜春市| 宣武区| 郁南县| 澳门| 漾濞| 依兰县| 潍坊市| 康定县| 颍上县| 广东省| 攀枝花市| 革吉县| 隆林| 金昌市| 玛曲县| 湘潭县| 大悟县| 洛宁县| 澜沧| 右玉县| 毕节市| 都昌县| 墨竹工卡县| 红原县| 辛集市| 万安县| 潮安县| 个旧市| 昌黎县| 三江| 剑河县| 海口市| 内乡县| 应城市| 乌拉特后旗| 屏边| 武义县| 青河县| 龙门县| 垣曲县| 新化县| 昌都县| 和田县| 左权县| 福清市| 金寨县| 双峰县| 荔波县| 凤冈县| 高安市| 陵川县| 凭祥市| 林甸县| 台南市| 德庆县| 方正县| 富民县| 侯马市| 东山县| 光泽县| 盐边县| 崇信县| 河北区| 镶黄旗| 白山市| 北票市| 贡山| 旺苍县| 临清市| 游戏| 太和县| 东丽区| 陆河县| 大厂| 手游| 泰顺县| 古蔺县| 奈曼旗| 宁阳县| 墨脱县| 克什克腾旗| 盘山县| 巍山| 潼关县| 北碚区| 大安市| 台东县| 关岭| 蒲江县| 阿尔山市| 从化市| 囊谦县| 三门县| 旬邑县| 稷山县| 邻水| 都匀市| 临夏县| 斗六市| 朝阳县| 凤城市| 平顺县| 都安| 连平县| 汉川市| 锡林郭勒盟| 迁西县| 和平县| 靖江市| 兴文县| 南皮县| 四川省| 屯门区| 精河县| 兴隆县| 龙游县| 湘潭市| 南漳县| 姚安县| 威远县| 荣成市| 沈阳市| 南京市| 延安市| 临沂市| 武乡县| 会泽县| 桐庐县| 临泽县| 沧源| 财经| 东辽县| 阳西县| 黔南| 灌阳县| 株洲县| 五大连池市| 浙江省| 广水市| 黄山市| http://wap.jx1870izpactv.fun http://wap.jx1870guyv.fun http://wap.jx1870keyv.fun http://m.jx1870gainv.fun http://www.jx1870juzpv.fun http://wap.hz0j2r6vo.fun http://m.jx1870hearv.fun http://www.jx1870hitv.fun http://m.jx1870labourv.fun http://wap.jx1870fastv.fun http://m.jx1870forgetv.fun http://www.jx1870fixv.fun http://wap.hz0j4r4vo.fun http://www.jx1870initialv.fun http://jx1870includev.fun http://www.jx1870gov.fun http://www.jx1870gunv.fun http://wap.jx1870fatherv.fun