LOADING...

加载过慢请开启缓存(浏览器默认开启)

loading

My World

Hello, I'm shstar.

牛牛的数列

题目链接:牛牛的数列


好久没写代码,一道简单dp都做了好久。

思路:从左往右算每个位置的最长连续上升子序列,从右往左算每个位置的最长连续下降子序列。然后遍历数组,对一个不满足要求的数,如果能修改成功(修改完后,该数大于其左边的数,小于其右边的数),那么修改后形成的长度就等于1+右边的最长连续下降子序列长度+左边的最长连续上升子序列长度;如果不能修改成功(卡了好久我才反应过来,还有这种情况),那么修改后形成的长度就等于1+max(左边的最长连续上升子序列长度,右边的最长连续下降子序列长度)。

牛牛的数列

#include<bits/stdc++.h>
using namespace std;
int n;
int a[100005];
int b[100005];
int c[100005];
int main(){
    cin>>n;
    int i;
    for(i=1;i<=n;i++)
        cin>>a[i];
    a[n+1]=1000000005;
    b[1]=1;
    int maxn=0;
    c[n]=1;
    for(i=2;i<=n;i++)
    {
        if(a[i]>a[i-1])
            b[i]=b[i-1]+1;
        else
            b[i]=1;
    }
    for(i=1;i<=n;i++)
    {
        if(b[i]>maxn)
            maxn=b[i];
    }
    for(i=n-1;i>=1;i--)
    {
        if(a[i]<a[i+1])
            c[i]=c[i+1]+1;
        else
            c[i]=1;
    }
    for(i=1;i<=n;i++)
    {   
        int len=0;
        if(a[i]>=a[i+1]||a[i]<=a[i-1])
        {
            if(a[i-1]+1<a[i+1])
                len=b[i-1]+c[i+1]+1;
            else
                len=max(1+b[i-1],c[i+1]+1);

            if(len>maxn)
                maxn=len;
        }
    }
    cout<<maxn<<endl;
}
阅读全文

倒霉的早晨

早上六点起床,取号,发现自己第一个面试,赶紧刷牙洗脸整桌子。然后接着背已经背了几十遍的英文自我介绍。越背越困,趴了一会儿😴。

八点半,应该是我面试的时间,结果等到四十多分才开始面试(这时已经非常非常困了)。

picture1

首先是英文自我介绍,不知道为什么,背的时候不卡壳的,到了面试时磕磕绊绊,不成样子😭。自我介绍还剩一段话的时候,我居然忘记这一段话的开头了,想了两秒没想起来,我就直接说结尾词了啊啊。自我介绍时还有个很影响我的地方,就是现场是外放声音的,等于说我说一句话就有一句回声。早知道自我介绍时就把音响关了,这样就听不到回声了。可惜当时没意识到😢。

现场收音也够差的。我听老师问题只能通过听关键词来判断老师想问啥。有个老师讲得实在太不清晰了,他问的好多问题我都叫他重复一遍,好尴尬。。。而且有个问题我还听错了,老师也主动地重问了我一遍。

好倒霉呜呜,比西交软院面试表现得差多了。希望之后有好运吧!

阅读全文

学习打卡第一天

  1. 线代学习了前两章(还没学完),看了点题。以及后面的矩阵变换也学了点。
  2. 数据结构看了一点点查找、排序。
  3. 背英文自我介绍。
  4. 焦虑ing
阅读全文

博客差不多搭好了

花了一天多,看了n篇github、简书、CSDN……终于做到了现在的程度。评论功能我也做好了,就是Gitalk登不上去。

picture1

有些东西还得研究研究,之后有空会来更新的!🎉

阅读全文
1
avatar
shstar
没什么好介绍的~
img_show