• 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://www.jx1870influencev.fun http://www.jx1870forestv.fun http://www.jx1870greenv.fun http://www.jx1870followv.fun http://wap.jx1870facev.fun http://m.jx1870fatv.fun http://wap.jx1870gainv.fun http://wap.jx1870fightv.fun http://wap.hz0j4r1vo.fun http://wap.jx1870experiencev.fun http://wap.jx1870estizatev.fun http://m.jx1870issuev.fun http://wap.hz0j0r0vo.fun http://hz0j2r0vo.fun http://m.jx1870interviewv.fun http://www.hz0j4r6vo.fun http://wap.jx1870firev.fun http://jx1870inventoryv.fun