Codeforces Round #555 (Div. 3), problem: (C1) Increasing Subsequence (easy version) 【贪心】
发布日期:2021-06-29 14:25:51 浏览次数:3 分类:技术文章

本文共 827 字,大约阅读时间需要 2 分钟。


题目大意

简单版大意是我们可以从左右两端每次拿走一个数,一直拿,不过要满足一个条件,每次拿的数要保证严格递增(即从小到大然后不会有相同的情况) 简单版的话是保证没有相同的数字出现


题解

用双向游标来做,采用贪心思想,每次都取优先取最小的那一个,在取的过程中,如果左边的取了,左游标往右移,如果右边的取了,右游标往左移。

在移动的过程中,我们要记录前一个值,因为我们必须保证严格递增,一直移动游标直到i>j或者已经没有更大的值了

#include
using namespace std;const int maxn=2e5+10;int a[maxn],n;string s="";int main(){
ios::sync_with_stdio(false); cin.tie(0); cin>>n; for(int i=1;i<=n;i++){
cin>>a[i]; } int i=1,j=n; int tmp=0; while(i<=j){
if(min(a[i],a[j])>tmp){
if(a[i]
tmp){
if(a[i]>a[j]){
tmp=a[i]; i++; s+="L"; }else{
tmp=a[j]; j--; s+="R"; } } else break; } cout<
<
学如逆水行舟,不进则退

转载地址:https://chocolate.blog.csdn.net/article/details/101631840 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Codeforces Round #555 (Div. 3), problem: (C2) Increasing Subsequence (hard version)【贪心+撞到南墙也不回头】
下一篇:Codeforces Round #555 (Div. 3), problem: (E) Minimum Array【贪心+二分 lower_bound+multiset初见】

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月12日 17时24分13秒