• 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今晚开码结果开奖现场历史开奖资料记录在线查询 三门县| 荆州市| 辽宁省| 嵊州市| 西峡县| 日喀则市| 灵璧县| 易门县| 海安县| 保定市| 吐鲁番市| 启东市| 牙克石市| 福建省| 梨树县| 澄城县| 浦北县| 叶城县| 项城市| 锦屏县| 晋城| 会东县| 万州区| 栖霞市| 西林县| 永春县| 靖安县| 望谟县| 交城县| 教育| 泗水县| 金川县| 西平县| 荔波县| 南川市| 栖霞市| 清丰县| 华容县| 烟台市| 松阳县| 色达县| 财经| 鹰潭市| 靖西县| 桐梓县| 科技| 邯郸县| 闽侯县| 沈丘县| 永康市| 江西省| 固镇县| 珲春市| 女性| 高陵县| 玉树县| 池州市| 北宁市| 邵阳县| 正安县| 安乡县| 上栗县| 卢龙县| 紫金县| 尚志市| 怀柔区| 东海县| 浦北县| 富川| 青铜峡市| 宁蒗| 桓台县| 颍上县| 合川市| 紫金县| 通河县| 山西省| 明光市| 秦安县| 葫芦岛市| 拜泉县| 汤阴县| 永福县| 临湘市| 达孜县| 兰坪| 西华县| 无锡市| 五大连池市| 平塘县| 湖口县| 原平市| 平顶山市| 宿迁市| 遵义县| 天气| 阆中市| 姚安县| 临西县| 渭南市| 彰化市| 呼图壁县| 明溪县| 仲巴县| 随州市| 安新县| 大渡口区| 济宁市| 普洱| 贵港市| 永福县| 桂阳县| 宁都县| 镇平县| 正阳县| 仙游县| 石家庄市| 公安县| 子洲县| 彭水| 襄城县| 中超| 黄平县| 霍城县| 鄂尔多斯市| 平乐县| 陕西省| 谷城县| 天津市| 宣汉县| 龙泉市| 错那县| 浑源县| 永修县| 安顺市| 漾濞| 桑植县| 丁青县| 青河县| 镇雄县| 岳池县| 凌云县| 磐安县| 马关县| 长春市| 新建县| 湘西| 射阳县| 城口县| 扎兰屯市| 湖州市| 莱西市| 淮滨县| 姜堰市| 滨海县| 和平区| 南郑县| 榆林市| 枣庄市| 沾益县| 阿鲁科尔沁旗| 双峰县| 崇明县| 潮安县| 台北县| 阿城市| 浏阳市| 雷波县| 武冈市| 敖汉旗| 都匀市| 望谟县| 鄢陵县| 辽中县| 临桂县| 娱乐| 察雅县| 海门市| 渝中区| 芷江| 鹰潭市| 崇仁县| 永泰县| 建昌县| 延安市| 广丰县| 白银市| 嘉祥县| 武山县| 湘阴县| 闻喜县| 凤翔县| 临夏县| 漠河县| 淮北市| 河南省| 宝兴县| 当涂县| 朝阳县| 张北县| 开阳县| 沅陵县| 鹿邑县| 德惠市| 奉新县| 名山县| 马边| 孟州市| 仁布县| 雷波县| 临颍县| 寿光市| 漳州市| 柳林县| 鄂温| 迁西县| 芦山县| 宁安市| 永平县| 酉阳| 昌平区| 江阴市| 栾城县| 永康市| 东平县| 辽阳县| 古交市| 四子王旗| 焉耆| 务川| 永吉县| 饶平县| 磴口县| 红原县| 酒泉市| 托里县| 甘孜| 兴海县| 禄劝| 凤阳县| 繁昌县| 海兴县| 思茅市| 铜山县| 沙坪坝区| 囊谦县| 泊头市| 饶河县| 安溪县| 筠连县| 湾仔区| 江阴市| 十堰市| 瑞昌市| 武鸣县| 青州市| 辽宁省| 镇坪县| 海丰县| 阿鲁科尔沁旗| 庐江县| 金昌市| 溆浦县| 千阳县| 丰台区| 和龙市| 新巴尔虎左旗| 庆安县| 玉田县| 望奎县| 乌拉特后旗| 衡山县| 乐平市| 唐海县| 什邡市| 佳木斯市| 凤凰县| 迁安市| 嘉禾县| 克山县| 连云港市| 临江市| 鄂尔多斯市| 淮北市| 玉环县| 海门市| 彭阳县| 吉安市| 沙雅县| 海安县| 江安县| 泗阳县| 利川市| 乌兰县| 霍林郭勒市| 乡城县| 桂林市| 岑溪市| 闽侯县| 内丘县| 观塘区| 堆龙德庆县| 清水县| 修水县| 神木县| 扬州市| 丹江口市| 上思县| 永昌县| 芦溪县| 永城市| 开封县| 宁陵县| 武川县| 凤城市| 星座| 漳浦县| 美姑县| 娄烦县| 彝良县| 大悟县| 鄂温| 富宁县| 庄浪县| 达尔| 灵川县| 宁乡县| 渑池县| 修文县| 陆河县| 肇东市| 鹤庆县| 通河县| 榆中县| 新昌县| 普宁市| 隆子县| 准格尔旗| 霞浦县| 江门市| 夹江县| 广南县| 镇康县| 武山县| 普格县| 龙江县| 洛隆县| 蚌埠市| 定边县| 扬中市| 广元市| 崇文区| 南城县| 富民县| 玛曲县| 南投市| 名山县| 年辖:市辖区| 冕宁县| 津市市| 霍州市| 贵州省| 左云县| 南宁市| 昌黎县| 内江市| 武邑县| 闽侯县| 昭觉县| 汽车| 隆安县| 龙门县| 武穴市| 蓬溪县| 喜德县| 津市市| 金山区| 革吉县| 霍邱县| 青河县| 高碑店市| 漳州市| 汉寿县| 桑日县| 崇礼县| 贵溪市| 莒南县| 霍邱县| 武城县| 舞钢市| 平定县| 从江县| 东安县| 盐山县| 内江市| 鲁山县| 彭州市| 广河县| 瓦房店市| 奉化市| 启东市| 开原市| 泗洪县| 全椒县| 朝阳市| 绿春县| 嘉禾县| 福鼎市| 温泉县| 云梦县| 贵南县| 通州市| 大冶市| 江安县| 和田市| 阳高县| 辽阳市| 龙胜| 鄂州市| 韶关市| 凤翔县| 西林县| 讷河市| 交口县| 会同县| 东丰县| 柞水县| 南阳市| 惠州市| 临沧市| 墨玉县| 北辰区| 祁东县| 治县。| 永嘉县| 大宁县| 绵竹市| 监利县| 乌拉特后旗| 门源| 古田县| 云南省| 怀来县| 绥芬河市| 老河口市| 远安县| 江永县| 尤溪县| 桦南县| 无锡市| 龙泉市| 二连浩特市| 泗阳县| 尖扎县| 禹州市| 边坝县| 凤城市| 宜城市| 涿州市| 光泽县| 平南县| 綦江县| 特克斯县| 平定县| 伊宁市| 河津市| 台湾省| 庄浪县| 西林县| 牙克石市| 普格县| 台安县| 保靖县| 盐池县| 霍林郭勒市| 长沙市| 威远县| 合山市| 合阳县| 酒泉市| 汨罗市| 韶山市| 新沂市| 科技| 桂东县| 岢岚县| 溆浦县| 抚远县| 剑川县| 讷河市| 平江县| 营山县| 工布江达县| 谷城县| 临沧市| 恩平市| 宁陵县| 铅山县| 天津市| 永川市| 兴化市| 岑巩县| 沧源| 阜宁县| 阳西县| 云龙县| 盐池县| 曲阳县| 宿迁市| 阿拉善左旗| 舞钢市| 偏关县| 伊吾县| 萨嘎县| 修武县| 富锦市| 申扎县| 姜堰市| 新源县| 闵行区| 建水县| 陈巴尔虎旗| 眉山市| 天柱县| 曲沃县| 宝坻区| 怀安县| 连山| 公安县| 罗田县| 青冈县| 吴旗县| 讷河市| 凤翔县| 福州市| 都兰县| 辽中县| 寿光市| 遵义市| 繁峙县| 昆山市| 望江县| 平潭县| 江山市| 共和县| 绿春县| 海南省| 调兵山市| 台中市| 都昌县| 中阳县| 新津县| 军事| 襄垣县| 嵊泗县| 东莞市| 平阳县| 宜兴市| 岱山县| 塔河县| 偏关县| 深水埗区| 浏阳市| 嘉荫县| 通道| 凤阳县| 沾益县| 文安县| 金华市| 武定县| 卢龙县| 海宁市| 高唐县| 玉溪市| 楚雄市| 商丘市| 武鸣县| 长宁区| 营山县| 昆山市| 冕宁县| 乌拉特前旗| 台山市| 保定市| 桐乡市| 上林县| 外汇| 石泉县| 澄江县| 灌阳县| 宁德市| 吉安市| 天长市| 旅游| 宁乡县| 临颍县| 丰镇市| 夏河县| 石狮市| 安岳县| 博湖县| 苍梧县| 宜君县| 平陆县| 绥滨县| 义乌市| 肃北| 克拉玛依市| 宁安市| 莫力| 金华市| 鄂托克前旗| 金湖县| 靖西县| 洛浦县| http://m.jx1870bagv.fun http://wap.jx1870dezov.fun http://m.jx1870boxv.fun http://jx1870balancev.fun http://m.jx1870codev.fun http://3g.jx1870drugv.fun http://wap.jx1870busv.fun http://m.jx1870advancev.fun http://3g.jx1870cozpanyv.fun http://m.jx1870cruisev.fun http://wap.jx1870bankv.fun http://m.jx1870continuev.fun http://3g.jx1870dezandv.fun http://m.jx1870createv.fun http://www.jx1870discussv.fun http://www.jx1870directv.fun http://m.jx1870assuzev.fun http://m.jx1870definev.fun