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

    相关文章
    相关标签/搜索
    一,肖一码′期期准2018年香港六合马会开奖结果现场直播开奖历史资料记录在线查询 双流县| 灵丘县| 安新县| 娄烦县| 弥渡县| 彝良县| 新营市| 西乌| 土默特右旗| 西平县| 静乐县| 夏邑县| 绥化市| 凌源市| 临西县| 鸡西市| 中宁县| 英德市| 成武县| 安多县| 棋牌| 正安县| 翁牛特旗| 宜城市| 梧州市| 津南区| 都兰县| 邵阳市| 团风县| 宁河县| 利津县| 磴口县| 清流县| 金门县| 东平县| 乐至县| 若羌县| 平乐县| 建阳市| 句容市| 石城县| 汤原县| 闽侯县| 井研县| 盐山县| 洞口县| 新竹县| 三亚市| 观塘区| 道孚县| 兴仁县| 浦县| 淄博市| 容城县| 大埔县| 荥经县| 右玉县| 渝中区| 沙河市| 无棣县| 正宁县| 尼勒克县| 临汾市| 华宁县| 新兴县| 长岭县| 邹城市| 奉贤区| 临夏县| 博爱县| 巴彦淖尔市| 平山县| 巴彦县| 民县| 噶尔县| 治多县| 江北区| 黄冈市| 佛坪县| 宁阳县| 湘潭县| 宝丰县| 宿松县| 安宁市| 忻州市| 四川省| 鄂温| 连江县| 张家界市| 靖州| 建瓯市| 四平市| 南通市| 克什克腾旗| 盱眙县| 商水县| 历史| 涪陵区| 甘谷县| 临泉县| 岑溪市| 镇坪县| 佳木斯市| 滨州市| 鲁山县| 通许县| 福清市| 安国市| 周至县| 山东省| 海盐县| 府谷县| 临汾市| 溧阳市| 阜康市| 黄石市| 临夏市| 宜君县| 潼南县| 天等县| 临桂县| 德庆县| 讷河市| 安龙县| 孙吴县| 深圳市| 长顺县| 新营市| 洛宁县| 三台县| 景泰县| 丹东市| 疏勒县| 黎平县| 栖霞市| 新干县| 吐鲁番市| 承德县| 大庆市| 调兵山市| 馆陶县| 获嘉县| 普兰县| 大港区| 崇礼县| 霸州市| 杭锦后旗| 卓尼县| 米易县| 中牟县| 天峻县| 延津县| 神木县| 焉耆| 峨边| 富源县| 延吉市| 龙口市| 越西县| 西乡县| 拉萨市| 德格县| 潼南县| 济南市| 聊城市| 灵石县| 昭通市| 玉环县| 衡阳县| 凯里市| 吐鲁番市| 凭祥市| 乐山市| 盐亭县| 宁南县| 丹棱县| 忻城县| 武邑县| 岐山县| 怀化市| 巍山| 资阳市| 尚义县| 城口县| 营口市| 繁昌县| 寿阳县| 宁武县| 新余市| 青岛市| 霍山县| 紫阳县| 泰和县| 青铜峡市| 子洲县| 民县| 万安县| 连平县| 台南县| 通化市| 大丰市| 诏安县| 铁岭县| 泾阳县| 罗田县| 理塘县| 双城市| 泾阳县| 谷城县| 长阳| 洛南县| 西盟| 高密市| 贵德县| 霍城县| 曲松县| 嘉义县| 盐源县| 东阿县| 莒南县| 宁夏| 城固县| 平潭县| 温泉县| 鹤壁市| 连州市| 新巴尔虎左旗| 固镇县| 绩溪县| 贵定县| 中方县| 安徽省| 彰武县| 柏乡县| 乌兰浩特市| 茌平县| 沁源县| 夏河县| 湖州市| 阿克苏市| 玛纳斯县| 永兴县| 毕节市| 恩平市| 新安县| 乐昌市| 建阳市| 肥城市| 宽城| 绥棱县| 乐至县| 大安市| 定州市| 红安县| 旺苍县| 拜城县| 松潘县| 博客| 合江县| 登封市| 苗栗县| 布拖县| 东方市| 南丰县| 南投市| 湘阴县| 太湖县| 城固县| 辽源市| 崇阳县| 洛南县| 甘南县| 闵行区| 饶河县| 普陀区| 瑞昌市| 湖南省| 襄城县| 平度市| 诸城市| 兴化市| 晋城| 漾濞| 高雄县| 弋阳县| 巴里| 溧阳市| 砚山县| 阿拉善右旗| 浦县| 萍乡市| 上犹县| 龙门县| 乳山市| 景谷| 张掖市| 连城县| 锦屏县| 宁城县| 汨罗市| 乌兰县| 襄汾县| 哈尔滨市| 南丰县| 贵州省| 大冶市| 神农架林区| 贞丰县| 临高县| 金寨县| 资溪县| 舒兰市| 工布江达县| 墨竹工卡县| 舞阳县| 盈江县| 巨鹿县| 黔南| 上蔡县| 禹城市| 宁都县| 大渡口区| 莱阳市| 专栏| 崇礼县| 自治县| 锡林郭勒盟| 丹巴县| 巴彦县| 张掖市| 广灵县| 遂昌县| 宣威市| 大厂| 潞西市| 紫阳县| 罗山县| 桓台县| 天长市| 介休市| 九寨沟县| 桦甸市| 肥城市| 巩留县| 洪洞县| 常宁市| 山东| 都安| 大渡口区| 光山县| 石首市| 荥阳市| 扶余县| 曲阜市| 怀来县| 大邑县| 安化县| 桦川县| 赫章县| 闵行区| 宝应县| 宜州市| 大兴区| 石景山区| 大城县| 海安县| 宁化县| 南平市| 五台县| 南涧| 长丰县| 托克托县| 罗定市| 台湾省| 东山县| 静宁县| 台安县| 沂源县| 玛纳斯县| 库伦旗| 拜城县| 三亚市| 合作市| 石屏县| 赤水市| 大邑县| 常山县| 搜索| 尚志市| 饶平县| 正安县| 抚宁县| 曲阜市| 金阳县| 富蕴县| 罗源县| 磐安县| 高邑县| 武乡县| 宝鸡市| 山东省| 通州区| 甘洛县| 应城市| 嘉义县| 许昌县| 镇原县| 方正县| 天门市| 岚皋县| 澎湖县| 吕梁市| 汾西县| 陵川县| 梅河口市| 比如县| 永善县| 桃江县| 芮城县| 会理县| 正镶白旗| 江阴市| 洛宁县| 揭东县| 延安市| 岳普湖县| 涿鹿县| 车险| 胶南市| 邢台县| 昆山市| 宁武县| 房产| 万山特区| 屯留县| 石门县| 抚顺市| 钟祥市| 邻水| 科技| 高陵县| 观塘区| 乌恰县| 大厂| 原阳县| 外汇| 翼城县| 阿克苏市| 瓮安县| 赤城县| 郸城县| 镇远县| 昌平区| 南汇区| 赤水市| 资阳市| 施秉县| 札达县| 永年县| 山阴县| 皮山县| 清新县| 横峰县| 财经| 临海市| 台北市| 长垣县| 尚义县| 娄底市| 江安县| 太谷县| 交口县| 定州市| 迁西县| 延吉市| 孙吴县| 台湾省| 南涧| 分宜县| 庄河市| 广元市| 康平县| 临洮县| 建德市| 壤塘县| 元氏县| 翁牛特旗| 定兴县| 资讯| 曲松县| 和林格尔县| 富顺县| 武宣县| 静乐县| 夏邑县| 北海市| 牙克石市| 博乐市| 彭泽县| 花莲县| 宿迁市| 钦州市| 女性| 凯里市| 普兰县| 哈密市| 沙田区| 天门市| 南康市| 柏乡县| 巴楚县| 大理市| 滨州市| 包头市| 祁阳县| 长白| 西乌| 平罗县| 赞皇县| 德清县| 苍南县| 商城县| 许昌县| 东宁县| 敖汉旗| 昌图县| 霍林郭勒市| 余姚市| 岐山县| 随州市| 营口市| 汉中市| 依安县| 县级市| 固阳县| 聊城市| 兴文县| 和静县| 阿瓦提县| 和平区| 静安区| 松江区| 常熟市| 尚义县| 咸阳市| 双流县| 林口县| 惠水县| 巴林左旗| 钦州市| 乌审旗| 新野县| 伊吾县| 武邑县| 大石桥市| 图木舒克市| 临沧市| 南溪县| 洪江市| 婺源县| 安徽省| 长海县| 客服| 南阳市| 甘泉县| 灵璧县| 城口县| 当涂县| 乌什县| 五莲县| 仁怀市| 鲁甸县| 张掖市| 忻州市| 定襄县| 桦南县| 崇义县| 奉贤区| 三都| 当阳市| 和龙市| 杂多县| 宁都县| 河津市| 湘阴县| 怀柔区| 朝阳县| 连江县| 文登市| 上犹县| 黄冈市| 许昌市| 吴江市| 达拉特旗| 深州市| 贺兰县| 咸阳市| 宁远县| 松阳县| 轮台县| 吉首市| 赤峰市| 白河县| 日照市| 会理县| 赞皇县| 扶余县| 都昌县| 得荣县| 綦江县| 安阳市| 鹤山市| 临湘市| 高安市| 明星| http://www.jx1870izplezentv.fun http://wap.jx1870filev.fun http://jx1870fairv.fun http://wap.jx1870landv.fun http://wap.jx1870enjoyv.fun http://wap.jx1870initialv.fun http://m.hz0j2r5vo.fun http://jx1870flyv.fun http://www.jx1870faxv.fun http://m.jx1870exportv.fun http://jx1870helpv.fun http://jx1870holdv.fun http://jx1870izagev.fun http://www.jx1870instruzentv.fun http://www.hz0j3r6vo.fun http://wap.jx1870handv.fun http://jx1870fortv.fun http://m.jx1870lastv.fun