重启系统(等级考试4级 2021-03 T4)

这道题如果没有一次重启系统的机会就相当于两个最长不下降子序列加在一起。
所以只需要改亿点点即可
把dp分为 dpleft 和 dpright
最长不下降子序列程序:最长上升子序列 II 时间复杂度(nlogn) - 王浩泽 - 博客园 (cnblogs.com)
#include<bits/stdc++.h>using namespace std;const int N=1e5;const int inf=1e9;int main(){ int a[N],dp[N],n; cin>>n; for(int i=1;i<=n;i++) scanf("%d",&a[i]); int len=0; for(int i=1;i<=n;i++) { int l=0,r=len+1; while(l+1!=r) { int m=l+r>>1; if(dp[m]<a[i]) { l=m; } else { r=m; } } dp[r]=a[i]; len=max(len,r); } cout<<len; return 0;}
合在一起即可(还要注意亿点细节)
like
for(int x = 1; x <= n; x++){
ans = max(ans, dpleft[x] + dpright[x + 1]);
}
这里的dpleft[x]应该加上dpright[x+1] 如果用x 和 x 的话 x可能会被用两次。
dpleft 和 dpright 都应该初始化为1
在这里给大家推荐一个函数让后面原来倒着算的最长下降子序列 变成正着算的最长上升子序列。
reverse(a + 1, a + n + 1);
之后再拼拼凑凑变成前一段程序:
scanf("%d",&n);
for (int i = 1;i <= n;i++){
scanf("%d",&a[i]);
dpright[i] = dpleft[i] = 1;
}
reverse(a + 1, a + n + 1);
for (int i = 1;i <= n;i++){
for (int j = 1; j < i;j++){
if(a[i] >= a[j]){
dpleft[i] = max(dpleft[i],dpleft[j] +1);
}
}
}
for (int i = 2;i <= n;i++){
dpleft[i] = max(dpleft[i - 1], dpleft[i]);
}
for(int i = n - 1; i >= 1; i--){
for(int j = n; j > i; j--){
if(a[i] <= a[j]){
dpright[i] = max(dpright[i], dpright[j] + 1);
}
}
}
最后再找亿下最大值塞入ans中最后输出即可:
for(int i = n - 1; i >= 1; i--){
dpright[i] = max(dpright[i], dpright[i + 1]);
}
int ans = 0;
for(int x = 1; x <= n; x++){
ans = max(ans, dpleft[x] + dpright[x + 1]);
}
printf("%d\n", ans);
return 0;
完整代码:
#include <bits/stdc++.h>
using namespace std; int dpleft[10005],dpright[10005], a[10005];
int n; int main(){
scanf("%d",&n);
for (int i = 1;i <= n;i++){
scanf("%d",&a[i]);
dpright[i] = dpleft[i] = 1;
}
reverse(a + 1, a + n + 1);
for (int i = 1;i <= n;i++){
for (int j = 1; j < i;j++){
if(a[i] >= a[j]){
dpleft[i] = max(dpleft[i],dpleft[j] +1);
}
}
} for (int i = 2;i <= n;i++){
dpleft[i] = max(dpleft[i - 1], dpleft[i]);
}
for(int i = n - 1; i >= 1; i--){
for(int j = n; j > i; j--){
if(a[i] <= a[j]){
dpright[i] = max(dpright[i], dpright[j] + 1);
}
}
}
for(int i = n - 1; i >= 1; i--){
dpright[i] = max(dpright[i], dpright[i + 1]);
}
int ans = 0;
for(int x = 1; x <= n; x++){
ans = max(ans, dpleft[x] + dpright[x + 1]);
}
printf("%d\n", ans);
return 0;
}
重启系统(等级考试4级 2021-03 T4)的更多相关文章
- Python全国二级等级考试(2019)
一.前言 2018年9月随着全国计算机等级考试科目中加入“二级Python”,也确立了Python在国内的地位,猪哥相信Python语言势必会像PS那般普及.不久的将来,谁会Python谁就能获得女神 ...
- Python全国二级等级考试(2019)
一.前言 2018年9月随着全国计算机等级考试科目中加入“二级Python”,也确立了Python在国内的地位,猪哥相信Python语言势必会像PS那般普及.不久的将来,谁会Python谁就能获得女神 ...
- Vmware扩展磁盘如何不需重启系统
在虚拟机Vmware中我们有时候需要添加新的虚拟磁盘或给已有虚拟磁盘扩容(expand),在新增磁盘或磁盘扩容后,Linux系统并不能马上识别到.也就是说你看不到磁盘空间变化(使用fdisk -l查看 ...
- 烂泥:【解决】修改LVM卷组名重启系统后,无法进入进入系统
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 一台服务器系统已经安装完毕,但是LVM的卷组vg使用的是默认的VolGroup名称,使用起来感觉不舒服,打算把这个卷组名称修改为vg. 先来查看系统中有 ...
- Linux三种关机/重启系统的命令
Linux提供了三种关机/重启系统的命令:shutdown.halt和reboot.这三个命令在一般情况下只有 系统的超级用户(一般是指root)才可以执行.输入没有参数的shutdown命令,两分钟 ...
- 全国计算机等级考试二级Python语言程序设计考试大纲
全国计算机等级考试二级Python语言程序设计考试大纲(2018年版) 基本要求 掌握Python语言的基本语法规则. 掌握不少于2个基本的Python标准库. 掌握不少于2个Python第三方库,掌 ...
- 如何在CentOS 7中添加新磁盘而不用重启系统
导读 对大多数系统管理员来说扩充 Linux 服务器的磁盘空间是日常的工作之一.因此这篇文章会通过使用 Linux 命令,在 CentOS 7 系统上演示一些简单的操作步骤来扩充您的磁盘空间而不需要重 ...
- ubuntu16.04给普通用戸提成root权限,会出现造成重启系统,没有登录用户
一.导致问题的原因 直接修改配置文件提权,会造成重启系统后没有原来的登录用户 vim /etc/passwd nulige:x:0:0:nulige,,,:/home/gree:/bin/bash 解 ...
- iptables 重启系统生效
1. 重启系统生效 开启: chkconfig iptables on 关闭: chkconfig iptables off 2. 即时生效,重启后失效 开启: service iptables ...
- Centos7 fstab盘符挂载硬盘导致重启系统失败解决办法
服务器拥有多个硬盘插槽,在进行维护或重启时,这些硬盘的相对位置可能发生变化.利用盘符(dev/vda)方式挂载磁盘,可能由于磁盘顺序变化导致重启时读取fstab文件发生错误,从而无法正常重启服务器. ...
随机推荐
- civil3d安装教程2022序列号和密钥
Civil3D2021 WIN10 64位安装步骤:1.先使用"百度网盘客户端"下载C3D21_CN_x64软件安装包到电脑磁盘里,并右击进行解压,安装前先断网,然后找到Autod ...
- 面试 个人摸底监测 考察考察JS三座⼤⼭ 1. 原型和原型链 2. 作⽤域与闭包 3. 异步和单线程 (第四天)
01.如何判断⼀个变量是不是数组? let arr = [1,2,3,4] function fun(){ return arr instanceof Array } 02.如何使⽤class实现继承 ...
- from 表单非空验证以及多表单提交
开发中我们常用到$('#formid').serialize()方法进行表单序列化提交,但也相应催生了表单的非空严重以及多表单提交. form html: <form id="form ...
- 【Impala】概念、原理、内外部shell、建库建表、分区、查询、自定义函数、存储压缩
一.基本概念 1.介绍 对HDFS.Hbase数据的高性能.低延迟的交互式SQL查询功能 2.优缺点 优点:基于内存运算,无需写入磁盘,无需转化为MR,支持Data Locality调度(数据和计算在 ...
- websockets的原理
一.应用场景 http 协议 客户端发起请求的时候才会返回内容,如果要处理类似于聊天室的应用,需要客户端不间断的发起请求(轮询),非常占用服务器的性能.所以websocket出现了. 二.ws(wss ...
- MIsc writeup
1. 杂项 图片里面有什么 ,附件为一张图片 通过Binwalk查看发现有压缩包,通过foremost分离一下. 打开输出文件,发现里面有两个图片. 00000000.png是原图,00000722. ...
- 秒级查询之开源分布式SQL查询引擎Presto实操-上
@ 目录 概述 定义 概念 架构 优缺点 连接器 部署 集群安装 常用配置说明 资源管理安装模式 安装命令行界面 基于Tableau Web 连接器 使用优化 数据存储 查询SQL优化 无缝替换Hiv ...
- 伙伴福利,100个项目彻底精通Java!【开源】
为了帮助更多的小伙伴,快速成长进步,冲进大厂中厂,我分享了很多的项目哟,例如: java项目精品实战案例 | JavaSwing实战项目 但很多小伙伴,还觉得不够,好吧!今天就拿出压箱底的项目,给支持 ...
- EXACT函数
EXACT函数:EXACT函数是一个文本函数,通过这个函数可以将不同的字符串进行对比,通常用于信息核对. EXACT函数的功能:比较两个字符串是否一致,返回不同的结果. EXACT函数的语法结构:EX ...
- nacos注册中心单节点ap架构源码解析
一.注册流程 单nacos节点流程图如下: 流程图可以知,Nacos注册流程包括客户端的服务注册.服务实例列表拉取.定时心跳任务:以及服务端的定时检查服务实例任务.服务实例更新推送5个功能. 服务注册 ...