Codeforces Round #555 (Div. 3) C2. Increasing Subsequence (hard version)【模拟】
一 题面
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)【模拟】的更多相关文章
- Codeforces Round #555 (Div. 3) C2. Increasing Subsequence (hard version) (贪心)
题意:给你一组数,每次可以选队首或队尾的数放入栈中,栈中元素必须保持严格单增,问栈中最多能有多少元素,并输出选择情况. 题解:首先考虑队首和队尾元素不相等的情况,如果两个数都大于栈顶元素,那么我们选小 ...
- Codeforces Round #555 (Div. 3) c2 d e f
c2:Increasing Subsequence (hard version) 那边小取那边,然后相等比较后面的长度 #include<bits/stdc++.h> using name ...
- Codeforces Round #658 (Div. 2) C2. Prefix Flip (Hard Version) (构造)
题意:给你两个长度为\(n\)的01串\(s\)和\(t\),可以选择\(s\)的前几位,取反然后反转,保证\(s\)总能通过不超过\(2n\)的操作得到\(t\),输出变换总数,和每次变换的位置. ...
- Codeforces Round #622 (Div. 2) C2. Skyscrapers (hard version)(单调栈,递推)
Codeforces Round #622 (Div. 2) C2. Skyscrapers (hard version) 题意: 你是一名建筑工程师,现给出 n 幢建筑的预计建设高度,你想建成峰状, ...
- CodeForces Round #555 Div.3
A. Reachable Numbers 代码: #include <bits/stdc++.h> using namespace std; ; int N; set<int> ...
- Codeforces Round #555 (Div. 3) 解题报告
A.Reachable Numbers 题意: 给定操作f(x):将x加1,删去得到的数的所有末尾0,如f(10099)=10099+1=10100→1010→101.现在给定一个数n,对n进行无限次 ...
- 老年OIer的Python实践记—— Codeforces Round #555 (Div. 3) solution
对没错下面的代码全部是python 3(除了E的那个multiset) 题目链接:https://codeforces.com/contest/1157 A. Reachable Numbers 按位 ...
- Codeforces Round #555 (Div. 3) A B C1(很水的题目)
A. Reachable Numbers 题意:设f(x)为 x+1 这个数去掉后缀0的数,现在给出n,问经过无数次这种变换后,最多能得到多少个不同的数. 代码 #include<cstdio& ...
- Codeforces Round #555 (Div. 3)[1157]题解
不得不说这场div3是真的出的好,算得上是从我开始打开始最有趣的一场div3.因为自己的号全都蓝了,然后就把不经常打比赛的dreagonm的号借来打这场,然后...比赛结束rank11(帮dreago ...
随机推荐
- ecshop适配php
https://www.cnblogs.com/xiwang6428/p/5460155.html
- 怎样知道自己机器的出口网关IP(即外部IP)
方法一: 在浏览器中输入 : http://www.ip138.com/ 可以查到外部IP地址及地理位置 方法二: Just put in “where is my ip” in google t ...
- 使用类加载器加载配置文件/getClassLoader().getResourceAsStream()
加载配置文件的两种方式; 1. 2. 两者相比,第一种方式更为方便,因为文件目录发生改变就会找不到.
- MYSQL - JSON串中查找key对应的值
1.建表 -- 建表 drop table if exists ta_product2; CREATE TABLE ta_product2( id int primary key auto_incre ...
- HDU1863 畅通工程 2017-04-12 19:25 59人阅读 评论(0) 收藏
畅通工程 Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submissi ...
- 用 Servlet 进行上载的原理和实现
Servlet 是用 Java 编写的.协议和平台都独立的服务器端组件,使用请求/响应的模式,提供了一个基于 Java 的服务器解决方案.使用 Servlet 可以方便地处理在 HTML 页面表单中提 ...
- tomcat mac
在mac上安装tomcat,教程很不错:http://blog.csdn.net/j2ee_me/article/details/7928493 注意 1.要下载二进制文件,core, 2.解压后移动 ...
- 别做HR最讨厌的求职者
有些求职者认为自己各方面都与所应聘的职位要求相匹配,因此在被淘汰之后总是特别不解,努力回忆起每个面试环节,却始终找不到原因.是的,也许你真的很优秀,但是你被淘汰了,原因也许并不大,只是你得罪了HR.其 ...
- Java对象和XML转换
有时候,我们需要把Java对象转换成XML文件.这时可以用JAXB来实现.(JDK1.6及以后的版本无需导入依赖包,因为已经包含在JDK里了) 假如某个公司有许多部门,每个部门有许多职员,我们可以这样 ...
- 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 ...