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 ...
随机推荐
- Laravel 文件上传失败的问题 error 7
一个站点上传文件失败 error为7 UPLOAD_ERR_CANT_WRITE 临时文件上传不上 $_FILE打出来 Array( [file] => Array ( ...
- [SoapUI]怎样运用Schema通过*.xsd文件来验证response对应的xml文件
添加Groovy Script脚本对Test Step进行验证 脚本如下(已经运行通过): import javax.xml.XMLConstants import javax.xml.transfo ...
- mvc html.PartialView()传参
方式一,viewDatapublic static MvcHtmlString Partial(this HtmlHelper htmlHelper, string partialViewName, ...
- C语言 void 万能类型
C中 void类型其实是一种万能类型, 也就是说 我们的 void 可以代表任意一种类型,也就是说他的范围要比具体的一种类型要宽广, 例如: int *p = NULL;void *ptr = p; ...
- http://blog.csdn.net/hongchangfirst/article/details/26004335
悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁.传统的 关系型数 ...
- 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 ...
- 试题 D: 数的分解 蓝桥杯
试题 D: 数的分解本题总分: 10 分[问题描述]把 2019 分解成 3 个各不相同的正整数之和,并且要求每个正整数都不包含数字 2 和 4,一共有多少种不同的分解方法?注意交换 3 个整数的顺序 ...
- Oracle ERP Profile
1.配置系统 . 进入路径:SYSADMIN 登录,系统管理员--Profile--系统: 配置分类 配置文件 文件选项 内容 配置系统 ICX% ICX:日期显示样式 选择修改日期输 入格式(199 ...
- [编译,报错以及其他] 有关C/C++中int不能用-2147483648当最小值的问题
这个取决于今早看耗子叔的微博: 这里说到了int的取值范围的问题,int的取值是-2147483648 ~ 2147483647,但是如果直接在编译器(VS2013)中使用-2147483648会报错 ...
- Tomcat 配置用户认证服务供C#客户端调用
项目里,遇到的一个小问题来好好的总结一下.因为我们这个项目是用Java写的服务端发布WebService,客户端呢使用C#来调用WebService(本人以前搞过一段时间C#客户端,还总结了一个MVP ...