一 题面

  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. ecshop适配php

    https://www.cnblogs.com/xiwang6428/p/5460155.html

  2. 怎样知道自己机器的出口网关IP(即外部IP)

    方法一: 在浏览器中输入 :  http://www.ip138.com/ 可以查到外部IP地址及地理位置 方法二: Just put in  “where is my ip” in google t ...

  3. 使用类加载器加载配置文件/getClassLoader().getResourceAsStream()

    加载配置文件的两种方式; 1. 2. 两者相比,第一种方式更为方便,因为文件目录发生改变就会找不到.

  4. MYSQL - JSON串中查找key对应的值

    1.建表 -- 建表 drop table if exists ta_product2; CREATE TABLE ta_product2( id int primary key auto_incre ...

  5. HDU1863 畅通工程 2017-04-12 19:25 59人阅读 评论(0) 收藏

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

  6. 用 Servlet 进行上载的原理和实现

    Servlet 是用 Java 编写的.协议和平台都独立的服务器端组件,使用请求/响应的模式,提供了一个基于 Java 的服务器解决方案.使用 Servlet 可以方便地处理在 HTML 页面表单中提 ...

  7. tomcat mac

    在mac上安装tomcat,教程很不错:http://blog.csdn.net/j2ee_me/article/details/7928493 注意 1.要下载二进制文件,core, 2.解压后移动 ...

  8. 别做HR最讨厌的求职者

    有些求职者认为自己各方面都与所应聘的职位要求相匹配,因此在被淘汰之后总是特别不解,努力回忆起每个面试环节,却始终找不到原因.是的,也许你真的很优秀,但是你被淘汰了,原因也许并不大,只是你得罪了HR.其 ...

  9. Java对象和XML转换

    有时候,我们需要把Java对象转换成XML文件.这时可以用JAXB来实现.(JDK1.6及以后的版本无需导入依赖包,因为已经包含在JDK里了) 假如某个公司有许多部门,每个部门有许多职员,我们可以这样 ...

  10. How do I determine if I'm being run under the debugger?

    #include <assert.h>#include <stdbool.h>#include <sys/types.h>#include <unistd.h ...