传送门

文章目录

  • 题意:
  • 思路:

题意:

给你一个长度为nnn的只包含1,21,21,2的序列aaa,你可以至多翻转一段区间,求翻转之后最长非递减子序列是多长。

思路:

考虑如果翻转的话,翻转的子区间肯定是222211112222111122221111这种类型的,再加上前面可能有111,后面可能有222,那么我们求的最长子序列的类型一定是类似于111222111222111222111222111222111222,所以我们只需要求一个类似于这种的序列最长是多少即可。
定义aaa为111111111类型的最长长度,bbb为112211221122类型的最长长度,ccc为112211112211112211类型的最长长度,ddd为112211221122112211221122类型的最长长度。
如果当前为111,那么a=a+1,c=max(c+1,b+1)a=a+1,c=max(c+1,b+1)a=a+1,c=max(c+1,b+1)。
如果当前为222,那么b=max(b+1,a+1),d=max(d+1,c+1)b=max(b+1,a+1),d=max(d+1,c+1)b=max(b+1,a+1),d=max(d+1,c+1)。
直接输入的时候转移即可。

// Problem: C. A Twisty Movement
// Contest: Codeforces - Codeforces Round #462 (Div. 2)
// URL: https://codeforces.com/contest/934/problem/C
// Memory Limit: 256 MB
// Time Limit: 1000 ms
//
// Powered by CP Editor (https://cpeditor.org)//#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4.1,sse4.2,avx,avx2,popcnt,tune=native")
//#pragma GCC optimize(2)
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<map>
#include<cmath>
#include<cctype>
#include<vector>
#include<set>
#include<queue>
#include<algorithm>
#include<sstream>
#include<ctime>
#include<cstdlib>
#define X first
#define Y second
#define L (u<<1)
#define R (u<<1|1)
#define pb push_back
#define mk make_pair
#define Mid (tr[u].l+tr[u].r>>1)
#define Len(u) (tr[u].r-tr[u].l+1)
#define random(a,b) ((a)+rand()%((b)-(a)+1))
#define db puts("---")
using namespace std;//void rd_cre() { freopen("d://dp//data.txt","w",stdout); srand(time(NULL)); }
//void rd_ac() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//AC.txt","w",stdout); }
//void rd_wa() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//WA.txt","w",stdout); }typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;const int N=1000010,mod=1e9+7,INF=0x3f3f3f3f;
const double eps=1e-6;int n;int main()
{//  ios::sync_with_stdio(false);
//  cin.tie(0);int x,y,z,w;x=y=z=w=0;scanf("%d",&n);for(int i=1;i<=n;i++) {int now; scanf("%d",&now);if(now==1) {x=x+1;z=max(z+1,y+1);}else {y=max(y+1,x+1);w=max(w+1,z+1);}}printf("%d\n",max(z,w));return 0;
}
/**/

Codeforces Round #462 (Div. 2) C. A Twisty Movement dp + 思维转换相关推荐

  1. Codeforces Round #727 (Div. 2) E. Game with Cards dp + 思维

    传送门 文章目录 题意: 思路: 题意: 初始有左右手,上面各有一个数字为000的卡牌,每次都有一个新卡kik_iki​,你可以将其放在左手或者右手,使两只手上的卡片范围在[ll,i,rl,i][l_ ...

  2. Codeforces Round #462 (Div. 2)题解

    Codeforces Round #462 (Div. 2) B题--我固执的认为1e18是18位数,导致被hack,花了20分钟才检查出这个错误,很僵硬 Codeforces 934C 题意 给定一 ...

  3. Codeforces Round #585 (Div. 2) E. Marbles 状压dp + 逆序对

    传送门 文章目录 题意: 思路: 题意: 思路: 考虑数列最终的状态一定是相同颜色在一起,所以我们发现他的颜色是有顺序的!显然可以用状压dpdpdp来枚举颜色的顺序,但是又有问题了,你怎么确定当前这个 ...

  4. Codeforces Round #268 (Div. 1) C. Hack it! 数位dp + 构造数位

    传送门 文章目录 题意: 思路: 题意: 定义f(x)f(x)f(x)表示xxx的十进制下数位和,现在给你aaa,让你选一个区间[l,r][l,r][l,r],满足∑i=lrf(i)moda=0\su ...

  5. Codeforces Round #741 (Div. 2) E. Rescue Niwen! 字符串 + dp

    传送门 文章目录 题意: 思路: 题意: 给你一个串sss,定义其扩张串为s1,s1s2,...,s1s2..sn,s2,s2s3,...,sns_1,s_1s_2,...,s_1s_2..s_n,s ...

  6. Codeforces Round #740 (Div. 2) D2. Up the Strip dp + 分块优化 + 逆向思维

    传送门 文章目录 题意: 思路 题意: 有nnn个细胞,你初始在第nnn细胞上,假设你当前在xxx处,你每次可以进行如下两个操作: (1)(1)(1)选择[1,x−1][1,x-1][1,x−1]内一 ...

  7. Codeforces Round #732 (Div. 2) C. AquaMoon and Strange Sort 思维

    传送门 文章目录 题意: 思路: 题意: 给你nnn个数,每个数初始方向是向右,每次可以交换相邻两个位置并且将这两个位置的方向调换,问这个序列的最终状态能否是非递减且方向都向右. n≤1e5,ai≤1 ...

  8. Codeforces Round #588 (Div. 2) D. Marcin and Training Camp 思维

    传送门 文章目录 题意: 思路: 题意: 有nnn个人,每个人都有一个能力值bib_ibi​以及他会的技能aia_iai​,当他会第xxx个技能的时候,aia_iai​的第xxx位是111.定义当xx ...

  9. Codeforces Round #715 (Div. 1) C. Complete the MST 补图 + 思维 + 最小生成树

    传送门 文章目录 题意: 思路 题意: 给你一张nnn个点mmm个边的图,mmm条边是给定的,要求你给未给定的边赋值一个边权,使得所有边权异或和为000,求所有满足这种情况的图中最小生成树边权和最小的 ...

最新文章

  1. 【面向对象编程】(2) 类属性的定义及使用;__repr__()方法
  2. [洛谷P5137]polynomial
  3. Freemarker + xml 实现Java导出word
  4. DOS中判断进程是否存在的方法
  5. jquery动态加载JS【方法getScript】的改进
  6. php如何循环输出图片,[图片 显示] 缩图循环显示(php,mysql,script)-PHP教程,PHP应用
  7. 马约拉纳费米子:推动量子计算的“天使粒子”
  8. 查看zookeeper版本
  9. 【转】DICOM医学图像处理:基于DCMTK工具包学习和分析worklist
  10. 利用jaxp对xml进行dom解析
  11. win11关机后主机依旧运行怎么办 Windows11关机后主机依旧运行的解决方法
  12. re.sub对多处字符串进行替换
  13. java jpg转换成pdf格式_Java pdf和jpg互转案例
  14. tp3.2.3 图片打水印
  15. ThinkPad T61安装win7下的指纹识别软件,解决E7210005问题
  16. TypeScript及TypeScript在vue3.0项目中的基本使用
  17. FPGA开发技巧备忘录——目录
  18. Git分支切换的正确操作,你真的会吗?
  19. 【论文阅读--实时语义分割】BiSeNet V2: Bilateral Network with Guided Aggregation
  20. 图像归一化 normalization

热门文章

  1. 华为手机Android系统优缺点,第一次安卓机优缺点总结(对比iOS系统)
  2. 又砸又烧,还要泼脏水,这谣言到底什么时候才没人信?发生这样的事真没想到.........
  3. 女朋友在家是怎么利用我的模型的​
  4. Jupyter 常见可视化框架的选择
  5. 马云害怕的事还是发生了
  6. python色标_在Python中用色标可视化移动速度
  7. php ip处理函数,PHP取ip地址函数
  8. typora插入代码设置_Typora基本功能介绍
  9. java.awt.headless_以编程方式设置java.awt.headless = true
  10. android刷新时的圆形动画_Android自定义加载圈动画效果