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

    相关文章
    相关标签/搜索
    2020年白姐正版先锋香港最快开奖现场直播,2020香港开奖结果,六开彩开奖结果,香港开码结果记录 图们市| 龙游县| 竹山县| 绍兴县| 白银市| 临潭县| 峨眉山市| 涿鹿县| 沙河市| 平潭县| 泗洪县| 南宁市| 宜君县| 商水县| 淳安县| 精河县| 灵寿县| 金阳县| 锡林郭勒盟| 阿克| 江西省| 丹凤县| 襄垣县| 东至县| 临高县| 海伦市| 保康县| 庐江县| 四子王旗| 平阳县| 怀安县| 来宾市| 通州市| 迁安市| 方正县| 苏州市| 民县| 法库县| 会泽县| 闵行区| 金平| 开原市| 阿拉善左旗| 陇南市| 贺兰县| 忻城县| 绥芬河市| 中超| 太康县| 新和县| 南陵县| 连州市| 洛浦县| 门头沟区| 成都市| 青浦区| 晋州市| 改则县| 平果县| 长兴县| 吉隆县| 乐平市| 栾城县| 孝感市| 葵青区| 汪清县| 南川市| 大同县| 微博| 阜阳市| 商河县| 沈阳市| 新疆| 泊头市| 鄂尔多斯市| 卢龙县| 湖北省| 塔城市| 荆州市| 新昌县| 德江县| 翼城县| 广平县| 涡阳县| 章丘市| 西平县| 兴和县| 温宿县| 石阡县| 黎川县| 唐海县| 定安县| 孙吴县| 龙川县| 灵台县| 广平县| 临潭县| 元朗区| 永靖县| 罗定市| 胶州市| 广东省| 根河市| 固阳县| 彭州市| 宣化县| 竹溪县| 武邑县| 突泉县| 蒙阴县| 上蔡县| 攀枝花市| 建瓯市| 沈阳市| 吴江市| 社会| 永定县| 上杭县| 宜宾市| 乌兰浩特市| 屯门区| 荥阳市| 连州市| 应用必备| 清原| 仪陇县| 恭城| 奉化市| 锡林浩特市| 拉萨市| 吉水县| 定结县| 辰溪县| 托克托县| 五台县| 白河县| 黑河市| 华容县| 和田市| 竹北市| 常州市| 章丘市| 临沂市| 黄浦区| 察雅县| 惠州市| 怀来县| 通海县| 济南市| 富源县| 靖江市| 达州市| 澳门| 达尔| 南岸区| 白玉县| 盐池县| 潞城市| 调兵山市| 湘潭市| 新蔡县| 进贤县| 盱眙县| 昔阳县| 雷山县| 杭州市| 澄江县| 太仆寺旗| 柘荣县| 思茅市| 通榆县| 阳新县| 新化县| 景德镇市| 通榆县| 夏邑县| 九龙坡区| 木兰县| 隆尧县| 阿瓦提县| 万载县| 汤原县| 太白县| 苏尼特右旗| 革吉县| 汉沽区| 衡东县| 安宁市| 宜州市| 武宁县| 准格尔旗| 盐边县| 鄄城县| 乡宁县| 马边| 屏东市| 涟源市| 大城县| 阳新县| 北川| 石家庄市| 石棉县| 和林格尔县| 德阳市| 水城县| 清新县| 蓬莱市| 陈巴尔虎旗| 富阳市| 本溪| 五台县| 舟曲县| 威信县| 庆安县| 开阳县| 保亭| 双流县| 类乌齐县| 绥德县| 银川市| 武山县| 张家口市| 麟游县| 峨眉山市| 宣化县| 溆浦县| 北安市| 博湖县| 玛多县| 永新县| 西乡县| 平陆县| 长岭县| 漳平市| 邵武市| 塔河县| 哈尔滨市| 彭水| 星子县| 永昌县| 永新县| 邮箱| 乌拉特中旗| 合作市| 监利县| 安岳县| 新宾| 镇巴县| 若羌县| 平泉县| 望江县| 荥阳市| 宁国市| 彰化县| 德江县| 巴东县| 永城市| 永丰县| 通化县| 海丰县| 廊坊市| 沙坪坝区| 岳普湖县| 榆社县| 四平市| 定远县| 汝州市| 天门市| 应城市| 临澧县| 十堰市| 霞浦县| 衢州市| 大厂| 报价| 积石山| 六安市| 措美县| 洪洞县| 齐河县| 西宁市| 闸北区| 常熟市| 江源县| 平凉市| 东乌| 济阳县| 怀仁县| 澄城县| 潜江市| 和林格尔县| 林口县| 新龙县| 若羌县| 武夷山市| 灵川县| 四川省| 荔浦县| 洛川县| 抚宁县| 乐都县| 阿拉尔市| 永仁县| 寻乌县| 长乐市| 博兴县| 盖州市| 门源| 钦州市| 涿州市| 电白县| 奇台县| 延边| 富平县| 龙陵县| 合作市| 横峰县| 宁国市| 万载县| 高青县| 大同县| 靖边县| 扶绥县| 兴化市| 乌什县| 金乡县| 宁蒗| 长治县| 禹州市| 吉首市| 前郭尔| 渑池县| 拉萨市| 温宿县| 黑山县| 娱乐| 仪征市| 搜索| 溆浦县| 奉贤区| 嘉义县| 彭州市| 辽宁省| 绍兴市| 九龙坡区| 工布江达县| 康平县| 大余县| 陆川县| 盐源县| 佛坪县| 介休市| 阳高县| 高碑店市| 凤庆县| 九江县| 长治县| 长岛县| 略阳县| 如皋市| 镇远县| 阳曲县| 漳平市| 隆安县| 革吉县| 区。| 塘沽区| 隆化县| 安国市| 太保市| 海原县| 富源县| 南康市| 肥西县| 西吉县| 义马市| 申扎县| 黎城县| 巨野县| 林周县| 唐海县| 新民市| 阿拉善盟| 宁河县| 靖远县| 丹凤县| 盐津县| 三亚市| 婺源县| 琼中| 策勒县| 东明县| 定襄县| 临沂市| 思南县| 延寿县| 蓬安县| 乐业县| 阆中市| 沙田区| 奇台县| 和顺县| 彩票| 兴城市| 萨迦县| 合山市| 洛阳市| 定襄县| 武陟县| 台北县| 崇义县| 马山县| 儋州市| 册亨县| 中江县| 平昌县| 定结县| 前郭尔| 普兰县| 建德市| 山东| 那坡县| 望江县| 绿春县| 乐清市| 稷山县| 常德市| 和静县| 上饶市| 汉中市| 资讯| 武清区| 乌兰浩特市| 镇巴县| 安岳县| 姜堰市| 新和县| 壶关县| 西吉县| 鹿邑县| 黑河市| 合江县| 抚宁县| 临朐县| 屏东市| 桐乡市| 日照市| 贵溪市| 恩平市| 汉阴县| 安平县| 新疆| 平陆县| 阿合奇县| 天峻县| 吕梁市| 保亭| 定南县| 枞阳县| 堆龙德庆县| 泸溪县| 保德县| 尤溪县| 淅川县| 常宁市| 澄迈县| 屏东县| 长治县| 大同市| 阜宁县| 永康市| 虎林市| 乾安县| 长汀县| 磴口县| 临夏市| 荆州市| 凤城市| 宜州市| 无极县| 长泰县| 桂阳县| 永川市| 铜川市| 长海县| 曲周县| 石楼县| 萨迦县| 牟定县| 呈贡县| 凭祥市| 泗阳县| 东乡族自治县| 华宁县| 四平市| 孝感市| 井陉县| 西峡县| 屯昌县| 呼和浩特市| 鄄城县| 正安县| 水富县| 雷州市| 绥芬河市| 乌鲁木齐县| 南开区| 德昌县| 葫芦岛市| 海丰县| 东光县| 隆回县| 安新县| 潍坊市| 巴中市| 双城市| 济南市| 兴仁县| 满城县| 阿荣旗| 肃南| 浏阳市| 娄底市| 江北区| 无为县| 南城县| 司法| 根河市| 惠州市| 昭苏县| 辽源市| 崇阳县| 黔西| 合水县| 肃宁县| 天台县| 广昌县| 云浮市| 靖边县| 江达县| 广东省| 太仆寺旗| 苏尼特右旗| 嘉兴市| 新竹市| 桑植县| 东港市| 陆丰市| 平遥县| 镇平县| 东源县| 梓潼县| 勐海县| 阿鲁科尔沁旗| 砀山县| 黄冈市| 谷城县| 台前县| 惠州市| 吴川市| 通城县| 饶河县| 密云县| 江门市| 祁连县| 青阳县| 西林县| 泾阳县| 乳源| 同德县| 奎屯市| 台中县| 新民市| 临漳县| 鸡泽县| 渭南市| 霞浦县| 土默特左旗| 静安区| 乌拉特中旗| 壶关县| 临武县| 康保县| 渝中区| 安平县| 绍兴县| 分宜县| 保康县| 紫金县| 东阿县| 微山县| 上饶市| 颍上县| 崇义县| 安达市| 东辽县| 喀喇沁旗| 板桥市| 蕉岭县| 景东| 苏尼特左旗| 连山| 大连市| 遂川县| 惠来县| 镇远县| 榆林市| 松原市| 涞水县| 霍邱县| 安泽县| 黑山县| 徐汇区| 墨玉县| 甘孜县| http://wap.jx1870lackv.fun http://jx1870lastv.fun http://wap.jx1870eyev.fun http://m.jx1870exchangev.fun http://wap.jx1870gainv.fun http://m.hz0j2r6vo.fun http://jx1870googlev.fun http://jx1870fixv.fun http://m.jx1870expandv.fun http://wap.jx1870hatev.fun http://www.jx1870includev.fun http://www.jx1870hatv.fun http://jx1870enhancev.fun http://www.jx1870jackv.fun http://jx1870installv.fun http://jx1870forecastv.fun http://m.jx1870interviewv.fun http://m.jx1870figurev.fun