一 题面

  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. Laravel 文件上传失败的问题 error 7

    一个站点上传文件失败 error为7  UPLOAD_ERR_CANT_WRITE 临时文件上传不上  $_FILE打出来 Array(    [file] => Array        (  ...

  2. [SoapUI]怎样运用Schema通过*.xsd文件来验证response对应的xml文件

    添加Groovy Script脚本对Test Step进行验证 脚本如下(已经运行通过): import javax.xml.XMLConstants import javax.xml.transfo ...

  3. mvc html.PartialView()传参

    方式一,viewDatapublic static MvcHtmlString Partial(this HtmlHelper htmlHelper, string partialViewName, ...

  4. C语言 void 万能类型

    C中 void类型其实是一种万能类型, 也就是说 我们的 void 可以代表任意一种类型,也就是说他的范围要比具体的一种类型要宽广, 例如: int *p = NULL;void *ptr = p; ...

  5. http://blog.csdn.net/hongchangfirst/article/details/26004335

    悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁.传统的 关系型数 ...

  6. ZOJ 3702 Gibonacci number 2017-04-06 23:28 28人阅读 评论(0) 收藏

    Gibonacci number Time Limit: 2 Seconds      Memory Limit: 65536 KB In mathematical terms, the normal ...

  7. 试题 D: 数的分解 蓝桥杯

    试题 D: 数的分解本题总分: 10 分[问题描述]把 2019 分解成 3 个各不相同的正整数之和,并且要求每个正整数都不包含数字 2 和 4,一共有多少种不同的分解方法?注意交换 3 个整数的顺序 ...

  8. Oracle ERP Profile

    1.配置系统 . 进入路径:SYSADMIN 登录,系统管理员--Profile--系统: 配置分类 配置文件 文件选项 内容 配置系统 ICX% ICX:日期显示样式 选择修改日期输 入格式(199 ...

  9. [编译,报错以及其他] 有关C/C++中int不能用-2147483648当最小值的问题

    这个取决于今早看耗子叔的微博: 这里说到了int的取值范围的问题,int的取值是-2147483648 ~ 2147483647,但是如果直接在编译器(VS2013)中使用-2147483648会报错 ...

  10. Tomcat 配置用户认证服务供C#客户端调用

    项目里,遇到的一个小问题来好好的总结一下.因为我们这个项目是用Java写的服务端发布WebService,客户端呢使用C#来调用WebService(本人以前搞过一段时间C#客户端,还总结了一个MVP ...