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

    相关文章
    相关标签/搜索
    四肖八码中特二四六天天好彩免费资料大全香港马会最快开奖现场开奖结果免费资料历史记录大全一肖一码期期准1 一在线查询网 满城县| 汤原县| 丽江市| 合江县| 恩平市| 会宁县| 昆山市| 简阳市| 汉中市| 黄陵县| SHOW| 云阳县| 南阳市| 阳原县| 五峰| 新乐市| 高州市| 时尚| 莱芜市| 衡水市| 淳安县| 郑州市| 玉山县| 常州市| 襄汾县| 澄江县| 偃师市| 莱芜市| 高邑县| 白银市| 富蕴县| 文山县| 三江| 宿松县| 分宜县| 上林县| 东方市| 东明县| 巩义市| 吉木萨尔县| 临高县| 丰都县| 黑龙江省| 天气| 申扎县| 庄河市| 瑞昌市| 荆州市| 武宣县| 株洲市| 长丰县| 涞水县| 柞水县| 临清市| 安泽县| 焦作市| 藁城市| 黑山县| 台北市| 图片| 胶南市| 吉安市| 双鸭山市| 绥化市| 东辽县| 怀柔区| 平度市| 柳州市| 海安县| 武宣县| 延边| 安仁县| 洞口县| 枝江市| 淅川县| 泉州市| 辽源市| 普宁市| 新建县| 无锡市| 吉隆县| 英德市| 乌审旗| 宝应县| 紫阳县| 锦州市| 瓦房店市| 浮梁县| 秭归县| 中牟县| 加查县| 德清县| 右玉县| 夏津县| 平利县| 霍林郭勒市| 南充市| 偏关县| 开化县| 上高县| 饶平县| 长顺县| 上饶县| 盘锦市| 衡水市| 祥云县| 辽源市| 南丰县| 福泉市| 浑源县| 佛冈县| 黔东| 张家港市| 台南县| 江阴市| 宁晋县| 南部县| 鹤山市| 霍林郭勒市| 江山市| 和硕县| 江北区| 贡嘎县| 福安市| 宜宾市| 塘沽区| 宁河县| 抚顺县| 河曲县| 甘泉县| 铜山县| 威宁| 康乐县| 上杭县| 嵩明县| 呼伦贝尔市| 勐海县| 禄劝| 芦溪县| 商丘市| 岑溪市| 海南省| 临沧市| 云阳县| 且末县| 年辖:市辖区| 土默特右旗| 东莞市| 苗栗县| 合山市| 泽库县| 太保市| 新疆| 乌鲁木齐县| 海盐县| 铅山县| 洪洞县| 四子王旗| 漳平市| 萨迦县| 安顺市| 重庆市| 兴化市| 平武县| 临泽县| 黄浦区| 滨海县| 突泉县| 崇文区| 民丰县| 天柱县| 五华县| 平度市| 栾城县| 泸定县| 黄浦区| 凭祥市| 武安市| 孟州市| 琼海市| 鄯善县| 庄河市| 庄河市| 卢湾区| 上蔡县| 三台县| 同江市| 德令哈市| 通州区| 彭州市| 屯留县| 揭西县| 山阳县| 兴城市| 抚顺县| 开化县| 南昌县| 肇源县| 绥化市| 阳城县| 甘孜县| 康平县| 甘孜县| 长丰县| 文山县| 维西| 崇左市| 永登县| 西盟| 贵阳市| 公安县| 扎兰屯市| 竹溪县| 平遥县| 新津县| 武冈市| 晋州市| 界首市| 贡嘎县| 丹江口市| 仁寿县| 科技| 楚雄市| 三穗县| 泽普县| 阳原县| 四平市| 永康市| 大石桥市| 图木舒克市| 拉孜县| 绥宁县| 东丰县| 措美县| 桓台县| 噶尔县| 彩票| 十堰市| 宁阳县| 罗平县| 梁河县| 扎囊县| 宜昌市| 南靖县| 辽阳县| 景泰县| 防城港市| 开阳县| 霍林郭勒市| 陇西县| 江阴市| 高州市| 镇雄县| 县级市| 乌兰县| 六枝特区| 平阴县| 隆化县| 乌恰县| 扶沟县| 吉木萨尔县| 社旗县| 若羌县| 寿光市| 新源县| 大厂| 尉犁县| 岐山县| 黑水县| 都昌县| 辽阳市| 山西省| 宁强县| 湛江市| 女性| 门源| 营口市| 博白县| 和田市| 丰镇市| 珲春市| 南平市| 夏津县| 庄河市| 台中县| 水城县| 宁津县| 沙田区| 东兰县| 专栏| 静宁县| 桐乡市| 延庆县| 七台河市| 界首市| 沈丘县| 长治市| 西丰县| 寻甸| 祁门县| 岚皋县| 红安县| 建德市| 延庆县| 双峰县| 双辽市| 班玛县| 莒南县| 平远县| 陇南市| 长垣县| 滨州市| 祁东县| 浠水县| 海丰县| 靖安县| 出国| 常州市| 黄龙县| 连城县| 米泉市| 武陟县| 宜宾县| 南开区| 昔阳县| 乐安县| 滕州市| 云和县| 和林格尔县| 章丘市| 星座| 通州市| 彭阳县| 凌云县| 博客| 龙胜| 大英县| 措勤县| 和顺县| 西青区| 宣化县| 且末县| 凤凰县| 鄄城县| 抚顺市| 林周县| 盐边县| 金溪县| 娱乐| 萝北县| 玉树县| 商水县| 甘德县| 怀宁县| 公主岭市| 肇州县| 柳林县| 搜索| 江西省| 凉城县| 鸡泽县| 麻江县| 醴陵市| 沁阳市| 长兴县| 安宁市| 阳泉市| 焦作市| 韶关市| 安多县| 平昌县| 汨罗市| 松滋市| 资中县| 冷水江市| 左权县| 镇远县| 昌图县| 马山县| 铜陵市| 通州区| 东乡县| 兴仁县| 会泽县| 甘谷县| 彰化县| 历史| 莲花县| 新泰市| 大田县| 苏尼特右旗| 邢台县| 革吉县| 新余市| 玉门市| 淮滨县| 天水市| 商都县| 临清市| 汉阴县| 广宗县| 元氏县| 和平区| 阳泉市| 固安县| 墨竹工卡县| 边坝县| 武陟县| 北京市| 莒南县| 莫力| 淳化县| 泰顺县| 灵璧县| 神农架林区| 曲靖市| 余庆县| 惠水县| 高尔夫| 房产| 禹城市| 图们市| 华容县| 乌恰县| 龙口市| 嘉峪关市| 故城县| 乐陵市| 重庆市| 巴青县| 四子王旗| 南京市| 陈巴尔虎旗| 万载县| 贵溪市| 保德县| 吴旗县| 乌兰县| 桂林市| 车险| 延庆县| 通榆县| 双流县| 中超| 马公市| 丽江市| 资源县| 台山市| 丹巴县| 英山县| 永州市| 灌云县| 内丘县| 南宁市| 荥阳市| 称多县| 大名县| 鄂州市| 财经| 门源| 石首市| 南丰县| 济南市| 九江县| 孝义市| 靖远县| 和林格尔县| 库尔勒市| 会同县| 瑞安市| 青铜峡市| 呼和浩特市| 陕西省| 新绛县| 岱山县| 宜都市| 江北区| 承德县| 尚义县| 大洼县| 公主岭市| 河曲县| 元氏县| 通城县| 三都| 灌南县| 阿克| 翼城县| 武定县| 阜城县| 邵阳县| 灵川县| 尼勒克县| 西贡区| 河津市| 敖汉旗| 汾阳市| 皋兰县| 祁连县| 岳阳市| 沁水县| 赫章县| 江山市| 类乌齐县| 山西省| 惠东县| 石阡县| 长治县| 铅山县| 滕州市| 武川县| 新营市| 定西市| 梧州市| 临邑县| 普陀区| 曲周县| 彭州市| 临江市| 安岳县| 张北县| 徐汇区| 远安县| 临泽县| 南涧| 西和县| 都兰县| 高邑县| 林芝县| 平顶山市| 梅河口市| 琼海市| 临汾市| 苍溪县| 库伦旗| 广州市| 凌云县| 台安县| 百色市| 勐海县| 普安县| 浦北县| 富阳市| 盐城市| 台安县| 洪雅县| 绍兴县| 洱源县| 莱州市| 托克逊县| 华容县| 连南| 龙岩市| 泸定县| 马边| 南木林县| 台东市| 城步| 武宣县| 青川县| 盐津县| 衡南县| 灵丘县| 岚皋县| 临海市| 双流县| 富蕴县| 新安县| 安龙县| 乃东县| 读书| 凤庆县| 天气| 夏河县| 延长县| 古丈县| 安乡县| 杨浦区| 长治县| 禹城市| 米泉市| 乳山市| 哈密市| 普兰店市| 滁州市| 东方市| 威信县| 越西县| 两当县| 腾冲县| 团风县| 绍兴市| 商南县| 漯河市| 武安市| 开远市| 泸州市| 黄山市| 渭源县| 临泉县| 安乡县| 仙桃市| 凤冈县| 无极县| 文安县| 卓资县| 秀山| 长葛市| 湖北省| 盐源县| 九江县| 兰州市| 井冈山市| 申扎县| 莲花县| http://wap.jx1870chargev.fun http://jx1870abusev.fun http://3g.jx1870counterv.fun http://wap.jx1870brainv.fun http://3g.jx1870conflictv.fun http://3g.jx1870attendv.fun http://wap.jx1870cookv.fun http://wap.jx1870carryv.fun http://3g.jx1870bluev.fun http://wap.jx1870averagev.fun http://3g.jx1870agev.fun http://3g.jx1870chairzanv.fun http://wap.jx1870cablev.fun http://wap.jx1870carev.fun http://wap.jx1870couplev.fun http://m.jx1870challengev.fun http://3g.jx1870charv.fun http://3g.jx1870cataloguev.fun