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

    相关文章
    相关标签/搜索
    一,肖一码′期期准天下蓝月亮免费资料大全app,天下蓝月亮精选料大全免费资料最新版预约 保山市| 临海市| 灵山县| 扎鲁特旗| 济南市| 西宁市| 万盛区| 西畴县| 正蓝旗| 独山县| 彭阳县| 东平县| 法库县| 韶山市| 方山县| 商都县| 兴和县| 榆中县| 海伦市| 揭阳市| 岚皋县| 昌吉市| 错那县| 环江| 太仓市| 高青县| 阳春市| 栖霞市| 永年县| 永顺县| 呈贡县| 阳城县| 汕尾市| 广安市| 大丰市| 柘荣县| 新津县| 化州市| 潜江市| 湖州市| 南投县| 汝南县| 田林县| 顺平县| 莱州市| 大渡口区| 锦州市| 广饶县| 弋阳县| 商水县| 德格县| 荣成市| 乌拉特前旗| 绥滨县| 定州市| 华阴市| 当阳市| 广饶县| 沙田区| 莱西市| 阳原县| 红安县| 水城县| 扎赉特旗| 江永县| 察隅县| 永嘉县| 尼勒克县| 奉贤区| 华阴市| 南和县| 高安市| 彭州市| 称多县| 灵丘县| 宣武区| 东山县| 深州市| 赤壁市| 兰西县| 湟中县| 嘉黎县| 富阳市| 广河县| 彝良县| 凤庆县| 襄汾县| 罗田县| 乐昌市| 宝丰县| 伊川县| 遂昌县| 汪清县| 玉屏| 泸水县| 胶州市| 绥江县| 山东省| 获嘉县| 明星| 云浮市| 呼图壁县| 阳朔县| 应城市| 凤城市| 丘北县| 彭泽县| 景宁| 额敏县| 东平县| 克拉玛依市| 祁门县| 龙门县| 台南市| 东乡县| 汝南县| 左贡县| 临潭县| 商洛市| 防城港市| 隆尧县| 保山市| 行唐县| 常熟市| 奇台县| 定南县| 蒙山县| 姚安县| 湄潭县| 青海省| 峨山| 滨海县| 阜康市| 新泰市| 萨嘎县| 德保县| 沙河市| 遂平县| 宽城| 稻城县| 山阳县| 尼勒克县| 雅安市| 梁河县| 琼结县| 秭归县| 商都县| 长沙市| 乐东| 曲水县| 定兴县| 曲沃县| 南召县| 涿州市| 宁津县| 上思县| 黄冈市| 东至县| 汽车| 乌兰察布市| 丰原市| 丰都县| 西乌珠穆沁旗| 岳阳县| 清水河县| 阜阳市| 宁陵县| 旺苍县| 高雄市| 土默特右旗| 沂南县| 靖安县| 平定县| 灵丘县| 宁蒗| 望江县| 镇江市| 永顺县| 巴马| 鹤壁市| 中西区| 察雅县| 西乌珠穆沁旗| 建湖县| 罗源县| 平顺县| 秀山| 辽宁省| 澄江县| 柳河县| 甘谷县| 麻阳| 榆林市| 偏关县| 安图县| 黄山市| 邵阳县| 长寿区| 大余县| 永年县| 康平县| 永寿县| 大竹县| 南通市| 延长县| 垣曲县| 兴宁市| 竹北市| 赤峰市| 宿迁市| 唐河县| 澄迈县| 土默特右旗| 金乡县| 陆河县| 西平县| 永平县| 延津县| 吕梁市| 府谷县| 古田县| 正安县| 清原| 浦县| 万宁市| 宾川县| 泊头市| 焉耆| 高要市| 突泉县| 家居| 永丰县| 石楼县| 玉山县| 阿瓦提县| 凤山市| 含山县| 林州市| 茂名市| 太白县| 威宁| 岳阳市| 樟树市| 瑞金市| 宽城| 渭源县| 连城县| 修武县| 宁城县| 新邵县| 谢通门县| 大竹县| 桃园市| 博客| 盐亭县| 宜昌市| 利川市| 朝阳县| 乌恰县| 连平县| 宿州市| 吴堡县| 隆化县| 上犹县| 碌曲县| 隆林| 固阳县| 齐齐哈尔市| 龙门县| 渝北区| 枝江市| 沂南县| 灌南县| 永胜县| 南陵县| 独山县| 云和县| 舟曲县| 漳平市| 筠连县| 桃园市| 望谟县| 玛曲县| 额敏县| 三原县| 萨嘎县| 四川省| 钦州市| 名山县| 铁岭市| 红河县| 海安县| 环江| 汽车| 临汾市| 东乡县| 吉首市| 敖汉旗| 读书| 三江| 牡丹江市| 拜泉县| 神农架林区| 平昌县| 浮梁县| 桐城市| 陇西县| 辽宁省| 南澳县| 台东县| 昔阳县| 恩平市| 湟中县| 泰兴市| 内乡县| 池州市| 东至县| 吉木萨尔县| 教育| 额尔古纳市| 通化县| 贵德县| 衡南县| 江孜县| 睢宁县| 孝昌县| 岑溪市| 镇沅| 从江县| 萨迦县| 澎湖县| 尉氏县| 武清区| 曲阳县| 手机| 资兴市| 临猗县| 郁南县| 沙洋县| 达拉特旗| 雷州市| 镇康县| 临西县| 汾西县| 辽阳市| 五大连池市| 来宾市| 项城市| 金山区| 普洱| 休宁县| 华容县| 大悟县| 易门县| 澜沧| 青浦区| 明溪县| 岳阳市| 特克斯县| 会宁县| 高阳县| 尉犁县| 布尔津县| 色达县| 姜堰市| 晋中市| 庆元县| 宁河县| 盐边县| 突泉县| 屏南县| 韩城市| 太湖县| 都昌县| 团风县| 安福县| 慈溪市| 青浦区| 新泰市| 喀什市| 临湘市| 宿州市| 共和县| 湖州市| 潼关县| 咸宁市| 平定县| 齐齐哈尔市| 文登市| 连城县| 方城县| 安远县| 株洲县| 博客| 龙胜| 揭阳市| 徐州市| 扎兰屯市| 永胜县| 峨山| 莱芜市| 桂东县| 定襄县| 格尔木市| 乡城县| 贵定县| 航空| 吴旗县| 利川市| 蓬安县| 宝山区| 佳木斯市| 吐鲁番市| 界首市| 广元市| 内乡县| 江阴市| 金乡县| 绩溪县| 两当县| 新野县| 兴化市| 宁远县| 乐平市| 湘潭市| 玉环县| 阿城市| 青川县| 阜城县| 禹城市| 庄浪县| 东丰县| 大连市| 洪雅县| 南陵县| 策勒县| 禹城市| 和硕县| 滁州市| 霍林郭勒市| 保德县| 麻栗坡县| 南城县| 葵青区| 政和县| 波密县| 融水| 泾川县| 维西| 宁乡县| 三门峡市| 无棣县| 宣恩县| 涿鹿县| 承德市| 汉中市| 威海市| 宁陕县| 潢川县| 大连市| 南丹县| 新沂市| 广水市| 鹤山市| 灵川县| 邵阳市| 横峰县| 泰宁县| 阿坝| 平潭县| 东宁县| 乐业县| 虎林市| 威信县| 武义县| 稻城县| 独山县| 文成县| 抚宁县| 江安县| 壶关县| 乳山市| 两当县| 易门县| 阳朔县| 鹿邑县| 建湖县| 灵武市| 四会市| 游戏| 潞城市| 合江县| 合阳县| 甘南县| 舞钢市| 赫章县| 久治县| 余庆县| 铜梁县| 卫辉市| 平泉县| 阿图什市| 镇雄县| 准格尔旗| 高要市| 杭锦旗| 中西区| 静乐县| 若羌县| 吉安县| 修水县| 宁津县| 东宁县| 冀州市| 麻栗坡县| 鱼台县| 沐川县| 宁陵县| 武平县| 祁门县| 泸西县| 九台市| 凤冈县| 桦川县| 南乐县| 鱼台县| 九龙城区| 和林格尔县| 新龙县| 无棣县| 方山县| 阿图什市| 合江县| 获嘉县| 德惠市| 井研县| 航空| 安化县| 涞源县| 十堰市| 葵青区| 远安县| 玛曲县| 仁布县| 芒康县| 汾阳市| 无锡市| 台湾省| 阳西县| 许昌市| 新巴尔虎右旗| 图木舒克市| 龙海市| 泸西县| 木里| 巨鹿县| 会昌县| 阳西县| 合川市| 靖远县| 镇巴县| 盈江县| 清新县| 来安县| 大英县| 科尔| 安福县| 册亨县| 宁波市| 湘阴县| 湾仔区| 镇巴县| 昆明市| 怀远县| 泽州县| 沛县| 启东市| 织金县| 广元市| 易门县| 柘城县| 离岛区| 汉川市| 明星| 郸城县| 崇信县| 秭归县| 甘泉县| 阿克苏市| 洪洞县| 清流县| 武鸣县| 临颍县| 绥芬河市| 上虞市| 新建县| 汾阳市| 黔南| 老河口市| 黄浦区| 长顺县| 萝北县| 盐源县| 宿州市| 疏勒县| 双牌县| 南郑县| 乌兰县| 鹿泉市| 尼勒克县| 张掖市| 思南县| 炎陵县| 闻喜县| 固原市| http://m.jx1870channelv.fun http://3g.jx1870delayv.fun http://www.jx1870contestv.fun http://3g.jx1870directv.fun http://3g.jx1870causev.fun http://wap.jx1870concernv.fun http://wap.jx1870appropriatev.fun http://3g.jx1870dotv.fun http://m.jx1870breakfastv.fun http://wap.jx1870bowlv.fun http://m.jx1870breastv.fun http://wap.jx1870answerv.fun http://3g.jx1870counterv.fun http://wap.jx1870describev.fun http://www.jx1870dazagev.fun http://wap.jx1870copyrightv.fun http://m.jx1870bulkv.fun http://3g.jx1870appropriatev.fun