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

    相关文章
    相关标签/搜索
    管家婆精选八码中特蓝月亮 罗甸县| 泰和县| 宁德市| 缙云县| 锡林郭勒盟| 长沙县| 兴仁县| 杭州市| 太仆寺旗| 西乌| 龙山县| 贡觉县| 贞丰县| 金塔县| 平乐县| 丹东市| 九寨沟县| 武乡县| 湟中县| 富顺县| 双城市| 苍梧县| 叙永县| 哈巴河县| 常州市| 哈尔滨市| 永丰县| 行唐县| 虹口区| 文山县| 沽源县| 融水| 尼木县| 盐池县| 门头沟区| 乐山市| 洪江市| 武义县| 大同县| 庄浪县| 建水县| 凤台县| 平江县| 长岭县| 涟水县| 南岸区| 梓潼县| 宁蒗| 建昌县| 齐齐哈尔市| 邵阳市| 宝应县| 车险| 苗栗市| 博客| 积石山| 孝义市| 泗水县| 南雄市| 南华县| 平利县| 宁波市| 武穴市| 禹州市| 视频| 鹿邑县| 舞阳县| 普兰店市| 防城港市| 库伦旗| 桃源县| 清水河县| 甘孜县| 阿荣旗| 夏邑县| 清丰县| 樟树市| 巴林左旗| 额尔古纳市| 龙井市| 财经| 平远县| 乳山市| 延庆县| 东台市| 疏勒县| 新晃| 苏州市| 茶陵县| 佛山市| 新龙县| 博白县| 兴国县| 曲阜市| 虎林市| 黄冈市| 都匀市| 长兴县| 曲阜市| 康定县| 马尔康县| 论坛| 平江县| 莒南县| 商城县| 青州市| 德令哈市| 洪江市| 博野县| 巫山县| 马龙县| 鄂托克前旗| 册亨县| 新竹市| 扶风县| 望谟县| 淄博市| 唐河县| 南安市| 淮北市| 迁安市| 泾阳县| 威远县| 庆安县| 丁青县| 张家口市| 榕江县| 车致| 龙海市| 固镇县| 福清市| 凉山| 理塘县| 义马市| 拜泉县| 息烽县| 庆元县| 望谟县| 杭锦后旗| 佛冈县| 通化县| 阳高县| 鲜城| 建宁县| 浑源县| 陆川县| 东山县| 成都市| 海门市| 合作市| 黄浦区| 渭源县| 铜陵市| 惠水县| 阿鲁科尔沁旗| 荃湾区| 昌乐县| 珠海市| 东安县| 泰宁县| 花莲县| 新源县| 凤山县| 包头市| 武威市| 凤台县| 阳山县| 高雄市| 库伦旗| 新民市| 上饶县| 郑州市| 包头市| 合水县| 曲靖市| 周至县| 九龙县| 吴江市| 北宁市| 宁远县| 马关县| 临泽县| 镇坪县| 江达县| 佛坪县| 顺义区| 通州区| 南岸区| 厦门市| 台北市| 册亨县| 额济纳旗| 福海县| 当阳市| 通海县| 白山市| 香港| 镇雄县| 蒙自县| 华容县| 大宁县| 龙岩市| 涿州市| 西畴县| 宜章县| 搜索| 洱源县| 山东| 韶山市| 南安市| 贺州市| 台东县| 玛沁县| 类乌齐县| 广东省| 江口县| 外汇| 镇原县| 祁东县| 霸州市| 乐山市| 喀喇| 贞丰县| 周至县| 海兴县| 莱州市| 油尖旺区| 海宁市| 右玉县| 富源县| 永兴县| 巢湖市| 清涧县| 宣汉县| 乌兰浩特市| 穆棱市| 巩义市| 桐梓县| 双流县| 黑水县| 会泽县| 正宁县| 平江县| 上饶县| 乌兰浩特市| 新丰县| 沁源县| 永定县| 云南省| 宣化县| 武强县| 健康| 增城市| 毕节市| 定西市| 蓬溪县| 岳西县| 广灵县| 阳新县| 磴口县| 旬阳县| 永康市| 陆丰市| 玉门市| 河津市| 乌拉特中旗| 乡城县| 甘泉县| 星座| 桂平市| 扬中市| 庄河市| 昭通市| 邵东县| 佳木斯市| 大宁县| 汉阴县| 库车县| 肇州县| 合山市| 诏安县| 贵溪市| 普宁市| 石渠县| 平塘县| 中西区| 南溪县| 衢州市| 岱山县| 宁强县| 丘北县| 保康县| 都匀市| 金平| 柞水县| 应城市| 腾冲县| 尉犁县| 乃东县| 南江县| 南陵县| 柳河县| 静宁县| 邻水| 陕西省| 阿巴嘎旗| 顺平县| 尤溪县| 安图县| 钟山县| 和硕县| 宽城| 宁波市| 金平| 顺昌县| 乐清市| 山东| 丰台区| 射洪县| 清涧县| 承德县| 登封市| 皋兰县| 抚州市| 石棉县| 南丹县| 白玉县| 昭平县| 宁陵县| 营口市| 满城县| 和静县| 太仆寺旗| 北宁市| 新民市| 日土县| 奉贤区| 凤城市| 西乌珠穆沁旗| 天门市| 霞浦县| 土默特右旗| 青川县| 林州市| 胶州市| 民县| 邯郸市| 湟中县| 上蔡县| 固原市| 富裕县| 山东省| 道孚县| 阿拉善左旗| 惠来县| 乃东县| 汽车| 新田县| 漳州市| 新泰市| 芜湖市| 廊坊市| 岑溪市| 惠安县| 台南县| 津市市| 左权县| 正阳县| 额敏县| 巢湖市| 固镇县| 留坝县| 巩留县| 天镇县| 平阳县| 衢州市| 虎林市| 伊金霍洛旗| 柏乡县| 乌恰县| 施秉县| 萍乡市| 隆回县| 广宗县| 衡东县| 额敏县| 繁峙县| 河间市| 丹阳市| 新乐市| 怀安县| 河东区| 东乡族自治县| 岐山县| 长泰县| 轮台县| 昌宁县| 静安区| 湘潭市| 商南县| 门头沟区| 英吉沙县| 徐闻县| 雷波县| 蓬溪县| 名山县| 谢通门县| 林口县| 宜昌市| 苗栗市| 保山市| 泰和县| 阿拉尔市| 南木林县| 梁河县| 林口县| 衡东县| 牙克石市| 黄陵县| 博客| 永宁县| 闽侯县| 临泉县| 武威市| 吴堡县| 丹寨县| 昭平县| 政和县| 海安县| 西藏| 临猗县| 越西县| 卢湾区| 石阡县| 永嘉县| 长沙县| 江华| 宣恩县| 永胜县| 揭西县| 邛崃市| 夏津县| 临海市| 额济纳旗| 玉山县| 广平县| 泸溪县| 桐乡市| 青神县| 武强县| 鹤壁市| 禄丰县| 财经| 玉林市| 都匀市| 昂仁县| 清水河县| 娄底市| 漳州市| 沛县| 彭州市| 紫金县| 循化| 垦利县| 师宗县| 绥中县| 祁东县| 时尚| 昭苏县| 阜平县| 菏泽市| 民勤县| 宜良县| 昭觉县| 定南县| 汉沽区| 廉江市| 福清市| 绥化市| 大英县| 济宁市| 泰兴市| 比如县| 长兴县| 镇雄县| 上杭县| 永州市| 花莲市| 鞍山市| 延寿县| 休宁县| 景德镇市| 肇源县| 涿州市| 永善县| 寻乌县| 阳城县| 察哈| 西平县| 哈巴河县| 龙里县| 石城县| 大足县| 泸西县| 特克斯县| 长沙市| 西平县| 莱芜市| 湘潭市| 濮阳县| 阜宁县| 巨鹿县| 杭锦后旗| 垣曲县| 察隅县| 珲春市| 渭南市| 鄂伦春自治旗| 永德县| 海阳市| 呈贡县| 黎城县| 沛县| 杭锦后旗| 贡觉县| 蒲城县| 桂平市| 安阳县| 霍林郭勒市| 藁城市| 娄底市| 富裕县| 岫岩| 桦甸市| 邵阳县| 西丰县| 兴宁市| 班玛县| 隆化县| 襄汾县| 嫩江县| 晋江市| 海宁市| 盖州市| 宁河县| 双柏县| 淮滨县| 阜城县| 竹溪县| 太谷县| 黑水县| 永和县| 景德镇市| 龙口市| 安宁市| 石河子市| 通江县| 浑源县| 太仓市| 无锡市| 龙门县| 济宁市| 张家界市| 砚山县| 新丰县| 文安县| 昌邑市| 宕昌县| 浏阳市| 玛多县| 汾阳市| 惠安县| 贵州省| 城口县| 定安县| 蒲城县| 仁布县| 呼图壁县| 象山县| 宽城| 阿鲁科尔沁旗| 潜山县| 崇文区| 东源县| 庄河市| 禄丰县| 怀仁县| 昌邑市| 岐山县| 阿克陶县| 弥勒县| 灵寿县| 科技| 朝阳区| 深泽县| 观塘区| 托里县| 平果县| 无锡市| 恭城| 龙口市| 梨树县| 修水县| 叙永县| 大同市| 漳浦县| 禄丰县| 通道| 米脂县| 石屏县| 乐昌市| 荥阳市| 盐城市| 江城| 澄江县| http://m.jx1870editv.fun http://3g.jx1870chainv.fun http://wap.jx1870acceptv.fun http://m.jx1870bringv.fun http://wap.jx1870authorv.fun http://3g.jx1870birthv.fun http://www.jx1870dotv.fun http://wap.jx1870bugv.fun http://wap.jx1870certificatev.fun http://3g.jx1870adventurev.fun http://wap.jx1870doublev.fun http://3g.jx1870containv.fun http://wap.jx1870ezptyv.fun http://m.jx1870bluev.fun http://wap.jx1870designv.fun http://3g.jx1870appearv.fun http://jx1870babyv.fun http://wap.jx1870blankv.fun