题解 | #牛牛的数列#

题解:

首先求左右两个方向可以组成的最长连续上升子序列

然后求断点的位置,左右两边接上最长上升子序列

最后输出答案

#include <iostream>
#include <algorithm>

using namespace std ;

const int N = 1e5 + 10 ;
int w[N] , l[N] , r[N] ;

int main(void)
{
    int n ; 
    cin >> n ;
    int ans = 0 ;
    for(int i = 1 ; i <= n ; i ++) scanf("%d" , &w[i]) ;
    w[0] = -0x3f3f3f3f , w[n + 1] = 0x3f3f3f3f ;
    for(int i = 1 ; i <= n ; i ++)
    {
        l[i] = 1 ;
        if(i > 1 && w[i] > w[i - 1]) l[i] = l[i - 1] + 1 ;
        ans = max(ans , min(l[i] +1, n+1)) ;
    }
    for(int i = n ; i ; i -- )
    {
        r[i] = 1 ;
        if(i < n && w[i] < w[i + 1]) r[i] = r[i + 1] + 1 ;    
        ans = max(ans , min(r[i] +1, n +1)) ;
    }
    for(int i = 1 ; i <= n ; i ++ )
        if(w[i - 1] + 1 < w[i + 1]) ans = max(ans , l[i - 1] + r[i + 1] + 1) ;
    
    cout << ans << endl ;
}
全部评论
洛谷题目页面传送门 & UVA12100 Printer Queue 题目页面传送门 题意简述 给你一个打印队列,每个任务都有一个优先级。现在有一个打印机,最多每分钟只能打印一个任务,如果你现在选择打印某个任务,它将在当前队列中排到底部。如果某个任务的优先级比当前队列中剩余的任务高,那么它就排在当前队列中的所有任务的后面。 已知队列顺序,和每个任务的优先级,问打印完一个指定位置的任务,所需要的分钟数。 题目思路 这道题目本质上是一道队列的模拟题目,如果想要在 $O(N^2)$ 的时间内 AC 掉的话,我们需要仔细揣摩题目的性质,思路如下: - 我们考虑不同的任务,它们在完成之后能够对结果所造成的贡献。那么显然正常打印完每一个任务,应该能够直接加上这个任务的优先级吧。 - 但是当某些任务的优先级比较高的时候,我们可以想到,我们应该把这个任务插入到前面的位置,让它短时间内完成,因为它的优先级比前面的任务都要高。 考虑最终的打印状态,假设 $f(i)$ 表示打印位置为 $i$ 的任务所需要的最少时间,那么一共有三种情况: - 这个任务的优先级大于队尾所有任务的优先级,那么我们直接在队尾加上这个任务就行了 - 这个任务的优先级小于队尾任务的优先级,那么我们直接在队尾保持不变,把这个任务插入到队列前面 - 这个任务打印完会使前面的任务都输出,那么我们将其放到一批任务中,所有这一批任务一起运行 显然我们想到可以使用双向链表模拟这个队列,来方便地实现剪切和插入的操作,这样题目就非常简单了,我们按照题意写个模拟即可。
点赞 回复 分享
发布于 2023-04-12 22:48 广东
请问这个0x3f3f3f3f是什么意思呀
点赞 回复 分享
发布于 2022-10-23 18:16 北京

相关推荐

03-15 14:55
已编辑
门头沟学院 golang
bg:双非学院本&nbsp;ACM银&nbsp;go选手timeline:3.1号开始暑期投递3.7号第二家公司离职顽岩科技&nbsp;ai服务中台方向&nbsp;笔试➕两轮面试,二面挂(钱真的好多😭)厦门纳克希科技&nbsp;搞AI的,一面OC猎豹移动&nbsp;搞AIGC方向&nbsp;一面OC北京七牛云&nbsp;搞AI接口方向&nbsp;一面OC上海古德猫宁&nbsp;搞AIGC方向&nbsp;二面OC上海简文&nbsp;面试撞了直接拒深圳图灵&nbsp;搞AIGC方向一面后无消息懒得问了,面试官当场反馈不错其他小厂没记,通过率80%,小厂杀手😂北京字节&nbsp;具体业务不方便透露也是AIGC后端方向2.28约面&nbsp;(不知道怎么捞的我,我也没在别的地方投过字节简历哇)3.6一面&nbsp;一小时&nbsp;半小时拷打简历(主要是AIGC部分)剩余半小时两个看代码猜结果(经典go问题)➕合并二叉树(秒a,但是造case造了10分钟哈哈)一天后约二面3.12&nbsp;二面,让我挑简历上两个亮点说,主要说的docker容器生命周期管理和raft协议使用二分法优化新任leader上任后与follower同步时间。跟面试官有共鸣,面试官还问我docker底层cpu隔离原理和是否知道虚拟显存。之后一道easy算法,(o1空间解决&nbsp;给定字符串含有{和}是否合法)秒a,之后进阶版如何用10台机加快构建,想五分钟后a出来。面试官以为45分钟面试时间,留了18分钟让我跟他随便聊,后面考了linux&nbsp;top和free的部分数据说什么意思(专业对口了只能说,但是当时没答很好)。因为当时手里有7牛云offer,跟面试官说能否快点面试,马上另外一家时间到了。10分钟后约hr面3.13,上午hr面,下午走完流程offer到手3.14腾讯技术运营约面,想直接拒😂感受:&nbsp;因为有AIGC经验所以特别受AI初创公司青睐,AIGC后端感觉竞争很小(指今年),全是简历拷打,基本没有人问我八股(八股吟唱被打断.jpeg),学的东西比较广的同时也能纵向深挖学习,也运气比较好了哈哈可能出于性格原因,没有走主流Java路线,也没有去主动跟着课写项目,项目都是自己研究和写的哈哈
烤点老白薯:你根本不是典型学院本的那种人,贵了你这能力
查看7道真题和解析
点赞 评论 收藏
分享
Cherrycola01:0实习 0项目 约等于啥也没有啊 哥们儿这简历认真的吗
点赞 评论 收藏
分享
评论
14
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务