一 题面

  C2. Increasing Subsequence (hard version)

二 分析

  需要思考清楚再写的一个题目,不能一看题目就上手,容易写错。

  分以下几种情况:

  1 左右两端数都小于等于构造的数组的最后一个数字

  2 左右两端数至少有一个大于构造的数组最后一个数字

    a. 左右两端数字相等,肯定满足上面条件。那么只可能走一个方向,两边都模拟一下,比一下大小即可

    b. 左右两端数字不等,则优先看谁满足上面2的情况,若都满足则选最小的

三 AC代码

 #include <bits/stdc++.h>

 using namespace std;

 const int MAXN = 2e5 + ;
int N, Data[MAXN];
int Ans, ansOP[MAXN]; int fun_l(int L, int R, int tmp)
{
int res = ;
while(Data[L] > tmp && L <= R)
{
res++;
tmp = Data[L++];
}
return res;
} int fun_r(int L, int R, int tmp)
{
int res = ;
while(Data[R] > tmp && R >= L)
{
res++;
tmp = Data[R--];
}
return res;
} void solve()
{
int L = , R = N - , tmp = ;
while(L <= R)
{
if( max(Data[L], Data[R]) <= tmp)
{
break;
}
if(Data[L] == Data[R])
{
int ansl = fun_l(L, R, tmp);
int ansr = fun_r(L, R, tmp);
if(ansl > ansr)
{
for(int j = ; j < ansl; j++)
ansOP[Ans++] = ;
}
else
{
for(int j = ; j < ansr; j++)
ansOP[Ans++] = ;
}
break;
}
else if(Data[L] < Data[R])
{
if(Data[L] > tmp)
{
tmp = Data[L++];
ansOP[Ans++] = ;
}
else
{
tmp = Data[R--];
ansOP[Ans++] = ;
}
}
else
{
if(Data[R] > tmp)
{
tmp = Data[R--];
ansOP[Ans++] = ;
}
else
{
tmp = Data[L++];
ansOP[Ans++] = ;
}
}
}
} int main()
{
//freopen("input.txt", "r", stdin);
while(~scanf("%d", &N))
{
for(int i = ; i < N; i++)
scanf("%d", &Data[i]);
solve();
printf("%d\n", Ans);
for(int i = ; i < Ans; i++)
{
if(ansOP[i] == )
printf("L");
else
printf("R");
}
printf("\n");
}
return ;
}

Codeforces Round #555 (Div. 3) C2. Increasing Subsequence (hard version)【模拟】的更多相关文章

  1. Codeforces Round #555 (Div. 3) C2. Increasing Subsequence (hard version) (贪心)

    题意:给你一组数,每次可以选队首或队尾的数放入栈中,栈中元素必须保持严格单增,问栈中最多能有多少元素,并输出选择情况. 题解:首先考虑队首和队尾元素不相等的情况,如果两个数都大于栈顶元素,那么我们选小 ...

  2. Codeforces Round #555 (Div. 3) c2 d e f

    c2:Increasing Subsequence (hard version) 那边小取那边,然后相等比较后面的长度 #include<bits/stdc++.h> using name ...

  3. Codeforces Round #658 (Div. 2) C2. Prefix Flip (Hard Version) (构造)

    题意:给你两个长度为\(n\)的01串\(s\)和\(t\),可以选择\(s\)的前几位,取反然后反转,保证\(s\)总能通过不超过\(2n\)的操作得到\(t\),输出变换总数,和每次变换的位置. ...

  4. Codeforces Round #622 (Div. 2) C2. Skyscrapers (hard version)(单调栈,递推)

    Codeforces Round #622 (Div. 2) C2. Skyscrapers (hard version) 题意: 你是一名建筑工程师,现给出 n 幢建筑的预计建设高度,你想建成峰状, ...

  5. CodeForces Round #555 Div.3

    A. Reachable Numbers 代码: #include <bits/stdc++.h> using namespace std; ; int N; set<int> ...

  6. Codeforces Round #555 (Div. 3) 解题报告

    A.Reachable Numbers 题意: 给定操作f(x):将x加1,删去得到的数的所有末尾0,如f(10099)=10099+1=10100→1010→101.现在给定一个数n,对n进行无限次 ...

  7. 老年OIer的Python实践记—— Codeforces Round #555 (Div. 3) solution

    对没错下面的代码全部是python 3(除了E的那个multiset) 题目链接:https://codeforces.com/contest/1157 A. Reachable Numbers 按位 ...

  8. Codeforces Round #555 (Div. 3) A B C1(很水的题目)

    A. Reachable Numbers 题意:设f(x)为 x+1 这个数去掉后缀0的数,现在给出n,问经过无数次这种变换后,最多能得到多少个不同的数. 代码 #include<cstdio& ...

  9. Codeforces Round #555 (Div. 3)[1157]题解

    不得不说这场div3是真的出的好,算得上是从我开始打开始最有趣的一场div3.因为自己的号全都蓝了,然后就把不经常打比赛的dreagonm的号借来打这场,然后...比赛结束rank11(帮dreago ...

随机推荐

  1. Django web 应用 http 协议 web框架

    一:什么是web 应用程序 Web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件 应用程序有两种模式C/S.B/S. ...

  2. T31P电子秤数据读取

    连接串口后先发送"CP\r\n"激活电子秤数据发送,收到的数据包是17字节的 using System; using System.Collections.Generic; usi ...

  3. Shell编程-01-Shell脚本初步入门

    目录 什么是Shell 什么是Shell脚本 Shell脚本语言的种类 常用操作系统默认Shell Shell 脚本的建立和执行 脚本规范 什么是Shell     简单来说Shell其实就是一个命令 ...

  4. HDU1232 畅通工程 2017-04-12 19:20 53人阅读 评论(0) 收藏

    畅通工程 Time Limit : 4000/2000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submissi ...

  5. ViewPage实现无限轮播画廊效果

    1. 效果图 2. 布局文件 主要使用的 android:clipChildren的意思:是否限制子View在其范围内.再父布局和viewpager中设置该属性  ,要显示三个界面 ,还要设置marg ...

  6. 利用SQL表生成按日期序列的唯一ID

    1. 创建一个表,用于存现在最大的ID SELECT [ID],[PreFix],[Code] FROM [DocumentNO] 2. 增加SP,利用锁表,生成相应的ID Create PROCED ...

  7. 使用Eclipse切换TFS工作区

    这个问题首先牵涉到两个概念: - Eclipse的工作区:Eclipse的工作区是运行Eclipse时需要连接的本地代码空间,默认情况下,在Eclipse中创建的项目都保存在Eclipse的工作区中 ...

  8. CF834D The Bakery

    题目链接:戳我 题意:将一个长度为n的序列分为k段,使得总价值最大.一段区间的价值表示为区间内不同数字的个数 \(n<=35000,k<=50\) 开始想的转移方程是这个样子的--\(dp ...

  9. docker 存储驱动之 overlay2

    overlay2 简介 OverlayFS是一种和AUFS很类似的文件系统,与AUFS相比,OverlayFS有以下特性:  1) 更简单地设计 2) 从3.18开始,就进入了Linux内核主线 3) ...

  10. “全栈2019”Java异常第一章:什么是异常?

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...