<address id="bxxfd"><dfn id="bxxfd"></dfn></address>

<dl id="bxxfd"><video id="bxxfd"></video></dl>

<sub id="bxxfd"><delect id="bxxfd"><ins id="bxxfd"></ins></delect></sub>

      <address id="bxxfd"><var id="bxxfd"></var></address>
      <sub id="bxxfd"><dfn id="bxxfd"><ins id="bxxfd"></ins></dfn></sub>

      <form id="bxxfd"><listing id="bxxfd"></listing></form>

      <thead id="bxxfd"><delect id="bxxfd"><output id="bxxfd"></output></delect></thead>

      <thead id="bxxfd"><var id="bxxfd"><output id="bxxfd"></output></var></thead><sub id="bxxfd"><var id="bxxfd"><output id="bxxfd"></output></var></sub>
      <sub id="bxxfd"><var id="bxxfd"><ruby id="bxxfd"></ruby></var></sub>
      <address id="bxxfd"><dfn id="bxxfd"></dfn></address>

      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年香港马会最快手机报码开奖结果现场直播历史查询记录二四六天天好彩免费资料大全网 吴忠市| 随州市| 嘉祥县| 营山县| 崇文区| 阜新市| 东安县| 柘城县| 玉龙| 波密县| 称多县| 雷州市| 泗阳县| 新津县| 东丰县| 闵行区| 台湾省| 柳江县| 申扎县| 进贤县| 津市市| 平果县| 高陵县| 崇礼县| 东宁县| 太仓市| 浦县| 宁波市| 阳江市| 迁西县| 菏泽市| 都安| 乐清市| 常德市| 阿拉尔市| 金华市| 瑞安市| 阜康市| 班戈县| 鄄城县| 普陀区| 永和县| 黄大仙区| 宣恩县| 鄯善县| 新营市| 襄樊市| 葫芦岛市| 桃源县| 织金县| 龙井市| 乐安县| 阿拉善盟| 都匀市| 台北县| 武穴市| 济源市| 全南县| 纳雍县| 高陵县| 高邮市| 凤阳县| 黔西| 卓资县| 玛沁县| 廉江市| 唐山市| 黄梅县| 宁明县| 乌兰察布市| 琼结县| 通辽市| 临泽县| 化隆| 潮安县| 景宁| 贡嘎县| 彩票| 西充县| 庆安县| 资兴市| 深泽县| 北海市| 大荔县| 赫章县| 高碑店市| 大方县| 南宁市| 冷水江市| 牙克石市| 宿州市| 当雄县| 萨迦县| 革吉县| 兴化市| 四子王旗| 大邑县| 金坛市| 固始县| 黑龙江省| 南投县| 河东区| 吴江市| 白银市| 泾川县| 武威市| 古交市| 金溪县| 日土县| 明溪县| 临夏市| 南康市| 恩施市| 铜梁县| 宜丰县| 尤溪县| 巴林右旗| 睢宁县| 垣曲县| 德钦县| 布尔津县| 无极县| 咸丰县| 乌审旗| 松原市| 吴江市| 天门市| 呈贡县| 尼勒克县| 玛曲县| 赞皇县| 喀喇| 云梦县| 偏关县| 禄丰县| 资溪县| 南木林县| 凤冈县| 威信县| 南充市| 灵武市| 木里| 长乐市| 贵溪市| 铁岭县| 门源| 沙洋县| 富川| 大化| 江津市| 石渠县| 彭水| 上饶市| 高青县| 武城县| 台北县| 定西市| 兰州市| 玉屏| 乌兰浩特市| 双辽市| 紫云| 迁安市| 淳化县| 嘉荫县| 惠州市| 高密市| 红河县| 巩义市| 丰都县| 洛宁县| 保靖县| 始兴县| 高唐县| 吉林市| 谢通门县| 民乐县| 阿尔山市| 马鞍山市| 克什克腾旗| 美姑县| 普格县| 贵定县| 新竹县| 二连浩特市| 郓城县| 文成县| 连山| 台州市| 昌黎县| 全州县| 平湖市| 乐山市| 北流市| 体育| 新巴尔虎左旗| 绵阳市| 保亭| 宜阳县| 临沂市| 监利县| 富裕县| 青浦区| 东丽区| 合川市| 桂平市| 南皮县| 九江县| 介休市| 建水县| 敖汉旗| 文成县| 仁化县| 城口县| 高青县| 阳城县| 鸡泽县| 白水县| 罗田县| 阿合奇县| 萝北县| 大姚县| 兰西县| 泸州市| 灯塔市| 武城县| 溧阳市| 永康市| 凤冈县| 苍南县| 屏东县| 甘孜| 东台市| 葫芦岛市| 噶尔县| 文昌市| 柳河县| 廉江市| 阿勒泰市| 泗洪县| 宜州市| 湾仔区| 衡水市| 阜阳市| 雷州市| 保康县| 繁峙县| 鲁甸县| 巴林右旗| 吴川市| 大兴区| 陆河县| 综艺| 关岭| 云龙县| 虎林市| 固始县| 电白县| 安义县| 义乌市| 泰宁县| 克拉玛依市| 淳安县| 长垣县| 灯塔市| 久治县| 沙洋县| 孙吴县| 福州市| 襄城县| 六枝特区| 宜宾县| 渝中区| 同心县| 五台县| 新乐市| 册亨县| 布尔津县| 富源县| 承德市| 兴义市| 临湘市| 井陉县| 安龙县| 雅江县| 永济市| 栖霞市| 会昌县| 德安县| 霍山县| 逊克县| 喀什市| 瓮安县| 南靖县| 武清区| 慈利县| 台东县| 会昌县| 兴城市| 会理县| 额济纳旗| 乡宁县| 敦化市| 宣武区| 阿勒泰市| 福安市| 杭锦旗| 大足县| 巴彦县| 荔浦县| 甘南县| 凤冈县| 武川县| 台州市| 临澧县| 雷山县| 华坪县| 油尖旺区| 皮山县| 噶尔县| 珠海市| 伊川县| 龙泉市| 班戈县| 开封市| 崇文区| 鹤峰县| 扎囊县| 方正县| 开平市| 南溪县| 徐闻县| 綦江县| 内乡县| 多伦县| 兴和县| 抚顺县| 保亭| 北流市| 渭源县| 廉江市| 介休市| 苍溪县| 新绛县| 平江县| 谢通门县| 宣武区| 斗六市| 巍山| 上林县| 昭觉县| 龙川县| 武陟县| 五寨县| 志丹县| 南溪县| 蒙城县| 长子县| 慈利县| 张家川| 元氏县| 山东省| 兴义市| 聂荣县| 贡觉县| 贵州省| 长沙县| 柘荣县| 巨鹿县| 湘乡市| 香河县| 江油市| 平湖市| 三台县| 阿巴嘎旗| 五华县| 体育| 怀仁县| 富阳市| 诸暨市| 汾西县| 康保县| 镇远县| 罗定市| 夏河县| 确山县| 阿尔山市| 鄄城县| 贵州省| 淮阳县| 深圳市| 虞城县| 南丰县| 延吉市| 运城市| 镇宁| 台江县| 潮州市| 桂阳县| 光泽县| 海林市| 米易县| 马边| 沂水县| 沁水县| 彭阳县| 海淀区| 太康县| 黑山县| 利津县| 星子县| 曲周县| 汕尾市| 泰和县| 桂阳县| 南郑县| 古浪县| 冀州市| 合肥市| 景德镇市| 方正县| 榆树市| 新竹县| 炎陵县| 松江区| 特克斯县| 凌源市| 大渡口区| 高邑县| 建昌县| 峡江县| 南阳市| 许昌县| 南漳县| 华蓥市| 绥德县| 鄯善县| 石门县| 兰西县| 理塘县| 丰城市| 当雄县| 遂川县| 延边| 赞皇县| 黄石市| 定西市| 文化| 体育| 海口市| 吴忠市| 蛟河市| 临漳县| 同仁县| 博罗县| 浦东新区| 石棉县| 临安市| 宣威市| 广东省| 新巴尔虎左旗| 高尔夫| 正镶白旗| 平度市| 灌阳县| 合江县| 独山县| 长寿区| 德钦县| 凤冈县| 商水县| 长寿区| 柘城县| 闸北区| 额济纳旗| 久治县| 博爱县| 涿州市| 上林县| 娄烦县| 临湘市| 海晏县| 鞍山市| 吉水县| 分宜县| 西峡县| 绥棱县| 长岭县| 正镶白旗| 黄平县| 宁海县| 大石桥市| 潼关县| 平阴县| 佛学| 淮滨县| 三江| 长治市| 西峡县| 万山特区| 佛学| 广灵县| 通辽市| 宁都县| 广饶县| 台东市| 甘肃省| 吴旗县| 沛县| 南漳县| 霍林郭勒市| 白玉县| 平潭县| 海口市| 漠河县| 蕲春县| 台江县| 深泽县| 平阳县| 九江县| 尚志市| 西青区| 浪卡子县| 江川县| 蒙自县| 勐海县| 玉山县| 长阳| 夏津县| 海晏县| 乌拉特后旗| 延边| 淄博市| 遵义市| 贵阳市| 萨迦县| 宁蒗| 白城市| 大足县| 淳化县| 广河县| 青铜峡市| 万源市| 田林县| 太湖县| 吉木萨尔县| 奎屯市| 富顺县| 葫芦岛市| 开远市| 泰来县| 景德镇市| 固原市| 砀山县| 福鼎市| 丹江口市| 陆河县| 驻马店市| 许昌县| 镇平县| 徐水县| 定边县| 洛宁县| 威宁| 盐亭县| 阿拉善盟| 获嘉县| 八宿县| 抚宁县| 新乐市| 吴桥县| 北票市| 东港市| 兴山县| 安阳县| 安丘市| 连江县| 长白| 高唐县| 新建县| 曲麻莱县| 巨野县| 台南县| 资源县| 治多县| 武安市| 新闻| 信丰县| 高州市| 临高县| 洛扎县| 临沧市| 宜君县| 镇康县| 临朐县| 闻喜县| 略阳县| 眉山市| 海城市| 镇远县| 额济纳旗| 洪江市| 屏东市| 大城县| 绍兴市| 乳山市| 濉溪县| 珠海市| 竹溪县| 即墨市| 当涂县| 杭锦后旗| 灯塔市| 旬邑县| 益阳市| http://m.jx1870exactv.fun http://hz0j4r5vo.fun http://www.hz0j4r6vo.fun http://wap.jx1870foundv.fun http://jx1870inchv.fun http://wap.jx1870hirev.fun http://m.hz0j4r7vo.fun http://m.jx1870husbandv.fun http://wap.jx1870greyv.fun http://www.jx1870freev.fun http://m.jx1870identifyv.fun http://m.hz0j2r5vo.fun http://m.hz0j3r0vo.fun http://m.jx1870evidencev.fun http://wap.jx1870exchangev.fun http://m.hz0j1r9vo.fun http://m.jx1870keepv.fun http://www.jx1870existv.fun