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

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

题解:求出1的前缀和,2的后缀和,以及区间[i,j]的最长不递增子序列。

f[i][j][0]表示区间i-j以1结尾的最长不递增子序列;

f[i][j][1]表示区间i-j以2结尾的最长不递增子序列,显然是区间i-j 2的个数;

所以转移方程为:

   f[i][j][1] = f[i][j-1][1] + (a[j]==2);
   f[i][j][0] = max(f[i][j-1][0], f[i][j-1][1]) + (a[j]==1);(1<=i<=n,i<=j<=n)

 

//#include"bits/stdc++.h"
#include <sstream>
#include <iomanip>
#include"cstdio"
#include"map"
#include"set"
#include"cmath"
#include"queue"
#include"vector"
#include"string"
#include"cstring"
#include"time.h"
#include"iostream"
#include"stdlib.h"
#include"algorithm"
#define db double
#define ll long long
#define vec vector<ll>
#define mt  vector<vec>
#define ci(x) scanf("%d",&x)
#define cd(x) scanf("%lf",&x)
#define cl(x) scanf("%lld",&x)
#define pi(x) printf("%d\n",x)
#define pd(x) printf("%f\n",x)
#define pl(x) printf("%lld\n",x)
//#define rep(i, x, y) for(int i=x;i<=y;i++)
#define rep(i,n) for(int i=0;i<n;i++)
const int N   = 2e3 + 5;
const int mod = 1e9 + 7;
const int MOD = mod - 1;
const int inf = 0x3f3f3f3f;
const db  PI  = acos(-1.0);
const db  eps = 1e-10;
using namespace std;
int a[N];
int l[N],r[N];
int f[N][N][2];
int main()
{int n;ci(n);for(int i=1;i<=n;i++) ci(a[i]),l[i]=l[i-1]+(a[i]==1);for(int i=n;i>=0;i--) r[i]=r[i+1]+(a[i]==2);int ma=-1;for(int i=1;i<=n;i++){for(int j=i;j<=n;j++){f[i][j][1]=f[i][j-1][1]+(a[j]==2);f[i][j][0]=max(f[i][j-1][0],f[i][j-1][1])+(a[j]==1);ma=max(ma,f[i][j][1]+l[i-1]+r[j+1]);ma=max(ma,f[i][j][0]+l[i-1]+r[j+1]);}}pi(ma);return 0;
}
View Code

超强O(n) 解法

翻转后的合法子序列翻转前一定是 一坨1 + 一坨2 + 一坨1 + 一坨2形式,坨可以为空,于是可以用4个变量分别维护前1坨,前2坨,前3坨,前4坨的最大值,更新时每个变量也只用上一轮最多两个变量更新,比如当前元素为2,那么前两坨的最大值ma2 = max(ma1, ma2) + 1,ma4 = max(ma3, ma4) + 1。因为将2接到ma1或ma2后的序列都是合法的ma2形式。代码十分简短。时间复杂度O(n),空间复杂度O(1)。

#include <iostream>
#include <fstream>
#include <sstream>
#include <cstdlib>
#include <cstdio>
#include <cmath>
#include <string>
#include <cstring>
#include <algorithm>
#include <queue>
#include <stack>
#include <vector>
#include <set>
#include <map>
#include <list>
#include <iomanip>
#include <cctype>
#include <cassert>
#include <bitset>
#include <ctime>using namespace std;#define pau system("pause")
#define ll long long
#define pii pair<int, int>
#define pb push_back
#define mp make_pair
#define clr(a, x) memset(a, x, sizeof(a))const double pi = acos(-1.0);
const int INF = 0x3f3f3f3f;
const int MOD = 1e9 + 7;
const double EPS = 1e-9;int ma1, ma2, ma3, ma4, x, n;
int main() {scanf("%d", &n);for (int i = 1; i <= n; ++i) {scanf("%d", &x);if (1 == x) {++ma1;ma3 = max(ma3, ma2) + 1;} else {ma2 = max(ma1, ma2) + 1;ma4 = max(ma4, ma3) + 1;}}printf("%d\n", max(ma3, ma4));return 0;
}
View Code

 

转载于:https://www.cnblogs.com/shuaihui520/p/10345628.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/484235.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络(十三)-数据链路层-动态分配信道

一.动态分配信道 也称动态媒体接入控制/多点接入&#xff0c;特点是信道并在用户通信时固定分配给用户。 轮询访问介质访问控制: -令牌传递协议随机访问介质访问控制:所用用户可随机发送信息&#xff0c;发送信息时占全部宽带。 -ALOHA协议 -CSMA协议 -CSMA/CD协议 -CSMA/CA协…

元宇宙大热后将陷低潮, 虚实互联网更准确, 2030前后才可能全面热启

作者&#xff1a;DCCI*未来智库、未来实验室专家胡延平来源&#xff1a;今日头条3个判断、3个野心、技术要件6个瓶颈&#xff1b;虚实互联网这个概念元宇宙信徒听起来有些扎心但真实恰当......扎克伯格称Facebook要从社交转型为一家元宇宙公司的专访瞬间刷屏&#xff0c;将去年…

python28 excel读取模块xlrd

安装&#xff1a; pip install xlrd 简单使用&#xff1a; import xlrdbook xlrd.open_workbook(rC:\Users\dinghanhua\Desktop\yqqapi.xlsx) # 打开excel print("the number of sheets:",book.nsheets) # sheet数量 print("sheet_names:",book.sheet_nam…

计算机网络(十四)-CSMA/CD协议

一.CSMA/CD协议 载波监听多点接入/碰撞检测CSMA/CD。 1.1 CS&#xff1a;载波侦听/监听&#xff0c;每一个站在发送数据之前以及发送数据时都要检测一下总线上是否有其他计算机在发送数据。 1.2 MA&#xff1a;多点接入&#xff0c;表示多计算机以多点接入的方式连接在一根总…

机器人流程自动化(RPA)系统原理及特点

来源&#xff1a;OFweek机器人编者按机器人流程自动化&#xff08;RPA&#xff09;系统是一种应用程序&#xff0c;它通过模仿最终用户在电脑的手动操作方式&#xff0c;提供了另一种方式来使最终用户手动操作流程自动化。可迅速实现业务提效&#xff0c;将重复性劳动进行自动化…

计算机网络(十五)-数据链路层-CSMA/CA协议

一.CSMA/CA协议 载波监听多点接入/碰撞避免CSMA/CA 主要在无线局域网中使用。 1.1 工作原理 发送数据前&#xff0c;先检测信道是否空闲。空闲则发出RTS&#xff0c;RTS包括发送端的地址、接收端的地址、下一份数据将持续发送的时间等信息&#xff1b;信道忙则等待。接收端收…

自动驾驶中的机器学习

出品&#xff1a;CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;作者&#xff1a;Denis Chikurtev译者&#xff1a;马超 责编&#xff1a;晋兆雨以下为译文&#xff1a;近年来&#xff0c;自动驾驶技术技术的发展速度非常快。预计达到完全自动驾驶L5的程度是指日可待的…

计算机网络(十六)-轮询访问介质访问控制

介质访问控制 1.几种协议 信道划分介质访问控制(MAC)协议&#xff1a; 基于多路复用技术划分资源。网络负载重&#xff1a;共享信道效率高&#xff0c;且公平。网络负载轻&#xff1a;共享信道效率低。 随机访问MAC协议&#xff1a; 用户根据意愿随机发送信息&#xff0c;…

区分真实模式的两个标准

来源&#xff1a;混沌巡洋舰人类作为模式发现者&#xff0c;处于一触即发的状态&#xff0c;我们可以倾向于在一个系统找到模式&#xff0c;而这个系统可能并不真实存在。由此&#xff0c;问题出现了&#xff0c;宇宙究竟是按照模式运行的&#xff0c;还是人类只是在我们看到的…

计算机网络(十七)-局域网

一.局域网 1.1 简称LAN&#xff0c;是指在某一区域内由多台计算机互联成的计算机组&#xff0c;使用广播信道。 1.2 特点 覆盖的地理范围较小&#xff0c;只在一个相对独立的局部范围内联。使用专门铺设的传介质进行联网&#xff0c;数据传输速率高。通信延迟时间短&#xf…

最让青年科学家们困惑的 10 个问题,是什么?

来源&#xff1a;腾讯研究院8 月 1 日&#xff0c;首届“青年科学家 50 论坛”在南方科技大学隆重拉开帷幕&#xff0c;由 100 位“科学探索奖”获奖人发起并投票选出的“十大科学技术问题”&#xff0c;在开幕式中重磅发布。这些问题体现了中国顶尖青年科学家们最前沿的科学探…

国内整车厂“造芯”还缺什么?

来源&#xff1a;Imagination Tech2020年下半年以来&#xff0c;汽车行业的“缺芯”问题就一直困扰着全球各大车厂&#xff0c;福特、通用、丰田、现代、沃尔沃等一众车厂相继出现部分工厂或车型停产的情况&#xff0c;而国内也有南北大众和蔚来等车厂受到影响&#xff0c;出现…

hadoop单机配置(非分布式)

1.1 环境 使用deepin系统、Hadoop3.1.3和Java环境jdk-8u162-linux-x64.tar.gz。 https://pan.baidu.com/s/1K1U1dypbgJeFvjHIGPcMqQ 提取码: 2vsi 1.2 准备 1.创建用户hadoop&#xff0c;按ctrlaltt打开终端&#xff0c;输入如下命令,并使用/bin/bash作为shell。 $ sudo use…

AlphaFold2爆火背后,人类为什么要死磕蛋白质?

来源&#xff1a; 脑极体近期在生命科学领域&#xff0c;有一则爆炸性的新闻&#xff0c;DeepMind 的Al phaFold2模型&#xff0c;将人类的98.5%的蛋白质&#xff0c;全部预测了一遍&#xff0c;并且做成了数据集免费开源&#xff0c;供科研圈的人使用。开放的数据集不仅包括人…

hadoop伪分布式配置

1.1 准备 通过gedit编辑器修改比较方便&#xff0c;因此需先安装gedit。 sudo apt-get install gedit1.2 修改配置文件core-site.xml和hdfs-site.xml(如下注释部分需要删除) gedit打开core-site.xml $ gedit ./etc/hadoop/core-site.xml<configuration>#在该语句对中添…

实现AGI,强化学习就够了?Sutton、Silver师徒联手:奖励机制足够实现各种目标...

来源&#xff1a;机器学习研究组订阅通用人工智能&#xff0c;用强化学习的奖励机制就能实现吗&#xff1f;几十年来&#xff0c;在人工智能领域&#xff0c;计算机科学家设计并开发了各种复杂的机制和技术&#xff0c;以复现视觉、语言、推理、运动技能等智能能力。尽管这些努…

这可能是十年来最酷的神经科学发现

© Designer Shit Documentary来源&#xff1a;Diego Salinas翻译&#xff1a;Rachel校对&#xff1a;Yord原文&#xff1a;medium.com/artificial-intelligence-and-cognition/what-makes-emotions-feel-good-or-bad-9bdcd0a81afc过去的十年是神经科学史上极不平凡的十年&…

计算机网络(二十一)-数据链路层设备

1.1 物理层扩展以太网 扩展添加了主干集线器&#xff0c;信道的冲突概率增大&#xff0c;冲突域增加&#xff0c;效率降低。 1.2 链路层扩展以太网 可以通过网桥和交换机来实现。 网桥&#xff1a;根据MAC帧的目的地址对帧进行转发和过滤。当网桥接收到一个帧时&#xff0…

计算机网络(十八)-以太网

一.概述 1.1 以太网指的是由Xerox公司创建并由Xerox、Intel和DEC公司联合开发的基带总线局域网规范&#xff0c;是当今现有局域网采用的最通用的通信协议标准。以太网络使用CSMA/CD技术。 1.2 以太网在局域网各种技术中占统治性地位。 造价低;是应用最广泛的局域网技术。比令…

Cell颠覆性发现:中脑神经元的新作用

来源&#xff1a;生物通除了颠覆长期以来关于中脑运动区域作用的观点&#xff0c;这项研究还可能缓解对药物无效的帕金森病患者的姿势和步态问题具有启示意义。中脑运动区是中脑的一部分&#xff0c;参与调节许多动物的行走和其他形式的运动。但是大脑这一区域神经元的功能仍然…