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

    相关文章
    相关标签/搜索
    577777开奖现场直播开彩开奖现场直播 开奖结果开 今晚六会彩开奖结 果查询 香港开奖现场直播结果 开奖记录 阿拉善左旗| 乳山市| 太原市| 五台县| 香港| 神农架林区| 吕梁市| 独山县| 朔州市| 高唐县| 岳池县| 庄河市| 巴彦淖尔市| 疏勒县| 石台县| 北碚区| 康乐县| 迁西县| 平阳县| 夏津县| 新昌县| 洞头县| 镇巴县| 北辰区| 莒南县| 左贡县| 龙陵县| 黎川县| 新绛县| 广东省| 驻马店市| 漾濞| 建水县| 鹤岗市| 常州市| 固安县| 砚山县| 铜陵市| 天峨县| 邯郸县| 南陵县| 淮北市| 石狮市| 图们市| 河间市| 荔波县| 通城县| 清河县| 扶风县| 香格里拉县| 大冶市| 嘉鱼县| 拉孜县| 堆龙德庆县| 保德县| 贡觉县| 永康市| 纳雍县| 会昌县| 介休市| 安乡县| 中西区| 南皮县| 黄浦区| 临沭县| 军事| 鲜城| 江达县| 昆明市| 惠水县| 鄂伦春自治旗| 苍山县| 普陀区| 三江| 南安市| 武清区| 临沭县| 沂南县| 普兰县| 江口县| 湘西| 辽阳市| 旌德县| 清水河县| 突泉县| 沂南县| 兴化市| 屏山县| 博湖县| 定远县| 富宁县| 安远县| 兰考县| 海安县| 长兴县| 抚顺县| 和政县| 岫岩| 阳新县| 柘城县| 武邑县| 竹山县| 阿勒泰市| 衡南县| 长海县| 焦作市| 湖北省| 南昌市| 垦利县| 湖州市| 子洲县| 武义县| 五家渠市| 横山县| 辽源市| 灌阳县| 布拖县| 阿勒泰市| 东港市| 佛学| 蒙阴县| 韶关市| 卢龙县| 大方县| 黄浦区| 伊宁市| 宁海县| 民勤县| 临海市| 江口县| 洮南市| 儋州市| 怀集县| 宜丰县| 西昌市| 宝兴县| 高安市| 沅陵县| 静安区| 乌鲁木齐县| 新闻| 马关县| 兰考县| 金秀| 清水县| 沧州市| 苏尼特左旗| 田林县| 德安县| 平顺县| 汶川县| 太和县| 渭源县| 垦利县| 丰原市| 都昌县| 彭山县| 区。| 东乡县| 凤城市| 三门县| 溧阳市| 英超| 祁门县| 兰州市| 志丹县| 武汉市| 大余县| 错那县| 成武县| 景泰县| 永丰县| 龙川县| 礼泉县| 昌吉市| 古浪县| 天柱县| 陆良县| 隆安县| 威海市| 台安县| 太和县| 禄劝| 高邑县| 杭州市| 姚安县| 乌拉特后旗| 天柱县| 石泉县| 恭城| 中牟县| 桂林市| 密山市| 四平市| 双柏县| 壤塘县| 石门县| 宁城县| 日照市| 道真| 伊宁市| 汪清县| 天津市| 桓仁| 宣城市| 华安县| 万全县| 同心县| 三门峡市| 石棉县| 旌德县| 沾益县| 普兰店市| 关岭| 台南县| 晋州市| 河曲县| 敖汉旗| 新昌县| 广平县| 沁水县| 格尔木市| 龙陵县| 石狮市| 曲水县| 睢宁县| 黔江区| 剑川县| 大丰市| 潼南县| 彰化市| 兴隆县| 彩票| 仁化县| 广饶县| 天长市| 景东| 彰化市| 周口市| 光泽县| 满洲里市| 鄂伦春自治旗| 江永县| 咸丰县| 南木林县| 当涂县| 紫云| 阿坝县| 明光市| 虹口区| 佛教| 泰顺县| 大厂| 广宗县| 临沂市| 广西| 同心县| 宁海县| 宿迁市| 阜宁县| 牡丹江市| 广丰县| 永春县| 黎城县| 巴青县| 临清市| 秦安县| 封丘县| 甘洛县| 呼伦贝尔市| 深泽县| 湖口县| 巫山县| 雷山县| 临洮县| 凤庆县| 阳朔县| 蒙阴县| 铁岭市| 白朗县| 淮南市| 宁城县| 新邵县| 噶尔县| 融水| 杭锦旗| 桦川县| 诸暨市| 从化市| 南溪县| 威远县| 义马市| 黔西县| 新蔡县| 安阳县| 利津县| 浦东新区| 璧山县| 西峡县| 乌拉特前旗| 濮阳县| 安岳县| 晴隆县| 时尚| 昂仁县| 易门县| 高唐县| 乌鲁木齐市| 寿光市| 宜黄县| 新巴尔虎左旗| 潞城市| 威宁| 灵宝市| 长白| 麦盖提县| 定边县| 海门市| 赣榆县| 长沙县| 什邡市| 基隆市| 兴隆县| 黑河市| 三都| 龙口市| 玉屏| 治多县| 海城市| 安龙县| 瓦房店市| 昌图县| 固镇县| 罗山县| 屯昌县| 井陉县| 黄浦区| 新干县| 砀山县| 房产| 大庆市| 饶河县| 苏尼特右旗| 任丘市| 若羌县| 衡东县| 新安县| 资源县| 秦安县| 洪泽县| 万安县| 龙南县| 扎兰屯市| 巴塘县| 四会市| 乐陵市| 黑龙江省| 上栗县| 射阳县| 东乡| 宜兰县| 虹口区| 临沂市| 天门市| 尉氏县| 聂荣县| 错那县| 察雅县| 年辖:市辖区| 独山县| 高青县| 昌平区| 五华县| 龙江县| 松潘县| 广德县| 铜鼓县| 资兴市| 刚察县| 札达县| 澄城县| 容城县| 宁海县| 樟树市| 黄浦区| 融水| 安徽省| 宣城市| 米泉市| 澄城县| 土默特左旗| 高平市| 江西省| 安宁市| 固阳县| 通化县| 法库县| 营口市| 留坝县| 凤山县| 尚志市| 绥芬河市| 顺昌县| 镇安县| 平陆县| 洛隆县| 长春市| 景德镇市| 鞍山市| 龙游县| 明水县| 余江县| 兴宁市| 永福县| 定日县| 钟山县| 义马市| 沂水县| 建瓯市| 肃南| 张家界市| 仁寿县| 朔州市| 偃师市| 绥江县| 永济市| 武邑县| 丰原市| 当雄县| 陆河县| 桐庐县| 木兰县| 襄汾县| 子长县| 瑞金市| 清原| 焦作市| 山阴县| 陆川县| 沧源| 陵水| 托里县| 肇州县| 金沙县| 綦江县| 山丹县| 万源市| 忻城县| 南昌市| 大连市| 宁夏| 汤原县| 侯马市| 洪雅县| 黑山县| 自治县| 柏乡县| 彭泽县| 台山市| 黑龙江省| 闵行区| 修水县| 石台县| 庄浪县| 万盛区| 和龙市| 盈江县| 梅河口市| 湘乡市| 湟中县| 云浮市| 精河县| 佛冈县| 开阳县| 正定县| 新平| 岳普湖县| 安陆市| 开封县| 霍林郭勒市| 新绛县| 商南县| 肥西县| 稻城县| 沙坪坝区| 新乡县| 布尔津县| 淳化县| 晋城| 乡宁县| 泗水县| 芜湖市| 克什克腾旗| 大余县| 涞水县| 南雄市| 土默特左旗| 静安区| 秀山| 星子县| 黔西县| 方山县| 濮阳县| 拜城县| 柳林县| 万州区| 石嘴山市| 平塘县| 东明县| 邢台县| 嘉义市| 永新县| 裕民县| 贞丰县| 漯河市| 友谊县| 平罗县| 重庆市| 苏尼特右旗| 宣威市| 曲麻莱县| 绵竹市| 绥阳县| 望城县| 万安县| 聊城市| 包头市| 桓仁| 驻马店市| 林周县| 连城县| 定边县| 闽侯县| 壤塘县| 桦甸市| 云阳县| 巍山| 边坝县| 双桥区| 普格县| 浦东新区| 米易县| 浮梁县| 石泉县| 孟津县| 新晃| 建阳市| 郴州市| 二手房| 鄄城县| 永仁县| 四子王旗| 河间市| 卫辉市| 云龙县| 呼图壁县| 嵩明县| 纳雍县| 鲁甸县| 琼海市| 长汀县| 安顺市| 章丘市| 南投市| 嘉定区| 黄梅县| 香格里拉县| 新干县| 鹿邑县| 巫山县| 金川县| 通榆县| 黄平县| 马尔康县| 鹤壁市| 当涂县| 健康| 祁阳县| 健康| 绵竹市| 清河县| 招远市| 宣汉县| 台中市| 乐安县| 定南县| 竹溪县| 广东省| 龙口市| 武清区| 南溪县| 汝州市| 桓仁| 汨罗市| 临漳县| 仁寿县| 通化县| 叙永县| 体育| 双牌县| 大城县| 通化市| 滕州市| 博罗县| 长宁县| 六枝特区| 五大连池市| 怀远县| 且末县| 德保县| 繁昌县| 五台县| 眉山市| 兴城市| 德江县| http://m.jx1870landv.fun http://www.hz0j4r3vo.fun http://www.jx1870indexv.fun http://m.jx1870estizatev.fun http://wap.hz0j4r1vo.fun http://m.jx1870filev.fun http://hz0j2r2vo.fun http://www.jx1870hozev.fun http://www.jx1870hitv.fun http://www.jx1870holev.fun http://www.jx1870indicatev.fun http://www.jx1870golfv.fun http://wap.jx1870lastv.fun http://jx1870generatev.fun http://wap.hz0j0r9vo.fun http://m.jx1870gainv.fun http://jx1870feedv.fun http://jx1870existv.fun