934C - A Twisty Movement

思路:dp

很容易想到要预处理出1的前缀和pre[i]和2的后缀和suf[i]

然后枚举区间,对于每个区间如果能求出最长递减序列的长度,那么就能更新答案了

这个用dp求

状态:

dp[i][j][0]表示i--j区间以2结尾的最长递减序列长度,很明显这个序列全为2,所以也就是i--j区间2的个数

dp[i][j][1]表示i--j区间以1结尾的最长递减序列长度

状态转移:

dp[i][j][0]=dp[i][j-1][0]+(a[j]==2)
dp[i][j][1]=max(dp[i][j-1][0],dp[i][j-1][1])+(a[j]==1)

代码:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define mem(a,b) memset(a,b,sizeof(a))const int N=2e3+5;
int a[N];
int pre[N];
int suf[N];
int dp[N][N][2];
int main(){ios::sync_with_stdio(false);cin.tie(0);int n;cin>>n;for(int i=1;i<=n;i++)cin>>a[i];for(int i=1;i<=n;i++)pre[i]=pre[i-1]+(a[i]==1);for(int i=n;i>=1;i--)suf[i]=suf[i+1]+(a[i]==2);int ans=0;for(int i=1;i<=n;i++){for(int j=i;j<=n;j++){dp[i][j][0]=dp[i][j-1][0]+(a[j]==2);dp[i][j][1]=max(dp[i][j-1][0],dp[i][j-1][1])+(a[j]==1);ans=max(ans,pre[i-1]+suf[j+1]+dp[i][j][0]);ans=max(ans,pre[i-1]+suf[j+1]+dp[i][j][1]);}}    cout<<ans<<endl; return 0;
} 

转载于:https://www.cnblogs.com/widsom/p/8449480.html

Codeforces 934C - A Twisty Movement相关推荐

  1. CodeForces - 933A A Twisty Movement(dp)

    题目链接:点击查看 题目大意:给出一个长度为 n 的数列,只由 1 和 2 组成,现在允许反转一段区间,问反转后的不下降子序列最长是多少 题目分析:因为 n 只有 2000,所以考虑n2n^2n2去枚 ...

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

    传送门 文章目录 题意: 思路: 题意: 给你一个长度为nnn的只包含1,21,21,2的序列aaa,你可以至多翻转一段区间,求翻转之后最长非递减子序列是多长. 思路: 考虑如果翻转的话,翻转的子区间 ...

  3. [2.7]【CF933A】A Twisty Movement【CF926B】Add Points【CF917A】The Monster【CF919E】Congruence Equation

    文章目录 T1:A Twisty Movement 题目 题解 code T2:Add Points 题目 题解 code T3:The Monster 题目 题解 code T4:Congruenc ...

  4. Codeforces Round #462 (Div. 1) A Twisty Movement -12序列的LIS

    题目链接:https://codeforces.com/problemset/problem/933/A 题目大意: 在一个只包含 1,2 的序列中,翻转其中任意一个区间,求此时最大的 LIS . 一 ...

  5. Codeforces Round #462 (Div. 2), problem: (C) A Twisty Movement (求可以转一次区间的不递增子序列元素只有1,2)...

    题目意思: 给长度为n(n<=2000)的数字串,数字只能为1或者2,可以将其中一段区间[l,r]翻转,求翻转后的最长非递减子序列长度. 题解:求出1的前缀和,2的后缀和,以及区间[i,j]的最 ...

  6. Codeforces-462C. A Twisty Movement

    传送门 N个数,为1或2.由一次操作,对一段区间进行反转,然后求最长不下降子序列长度 emmm想的是如果反转区间可以使答案较原本序列更大,那么区间内对答案的贡献必然是一个1与2组成的序列.总共反转的区 ...

  7. Codeforces 题目合集+分类+代码 【Updating...】【361 in total】

    961A - Tetris                                                模拟                                      ...

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

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

  9. 人像构图(特写/半身/七分/全身)

    特写(头部<=20cm,胸部10cm上下) 半身 七分 全身 查看全文 http://www.taodudu.cc/news/show-5828743.html 相关文章: 服务器 网卡芯片,网 ...

最新文章

  1. C六:define宏定义
  2. Leetcode 98. 验证二叉搜索树 (每日一题 20210810)
  3. 数组分成两组差值最小 python_数组中的数分为两组,让给出一个算法,使得两个组的和的差的绝对值最小,数组中的数的取值范围是0x100,元素个数也是大于0, 小于100 。...
  4. REST和SOAP:谁更好,或者都好?
  5. php windows共享内存,关于php的共享内存的使用和研究之由起
  6. 爬虫案列:京东商城长裤信息获取
  7. 还在为python远程控制电脑感到苦难?微信库:itchat带你一展风采
  8. python布尔类型运算_python布尔运算记录
  9. verilog学习记(测试和验证)
  10. Composite_组合模式_PHP语言描述
  11. 少年时期最后一个儿童节
  12. KITTI立体匹配数据集解析
  13. 电商工具箱之阿里巴巴获取商品
  14. 雷达信号处理---线性调频信号脉冲压缩MATLAB实现
  15. Hart/Hart-IP协议 介绍、分析和应用
  16. 新员工入职表_舞钢农商银行:组织新招录员工开展反假币培训
  17. 计算机网络软件系统是什么结构,计算机软件系统的组成是什么?
  18. python代码加密解密_Python实现对字符串的加密解密方法示例
  19. 通俗解释「什么是云计算」
  20. 微商如何用百度来进行引流推广?

热门文章

  1. C语言 十进制整数字符串转十六进制字符串
  2. ActivityGroup 实现分页和自定义标签(内有GridView的点击背景样式的改变方法)
  3. cdn厂商 同兴万点_同兴万点:TXNetworks和CDNetworks让我们傻傻分不清
  4. python sklearn 梯度下降法_(四)梯度下降法及其python实现
  5. php文件教程,php的文件上传入门教程(实例讲解)
  6. mysql 临时表增加主键_MySQL之重建表
  7. 计算机编程术语理解,计算机编程常用术语中英对照
  8. 镭威视监控怎么复位_三大原因导致海康威视、大华股份近期连续暴跌
  9. php版本最低要求:5.4_Zabbix 5.0.0beta1版本初体验
  10. liferay spring mvc的实现