最近看书看到这个up,b站上就去关注了一下。

https://space.bilibili.com/1317344920?spm_id_from=333.1387.follow.user_card.click

有一说一他的生活比较接近我理想的状态。也恰好是在现代社会。

我比较喜欢的生活就是这样一边做远程,然后一边到处玩,然后保持单身。挺好的。

唉唉,最近好焦虑。

上面应该有附图的,但是图床貌似出了点问题,得找个时间修一修。

今日天晴 宜休息。
开学了,又是换实验室。不过是另外一个社团。
去年经历的有点多,今年开年就显得平平无奇。
开始有点摆了。
其实工作还是挺多的,一方面是社团的日常工作,另外一方面就是以前欠下的工作。
比赛的话已经有点不想打了。到了大二下的这个时期,很多东西也差不多想明白了一点。
其实最主要的就还是对于很多需要“拼劲”作为前置条件的事情,我已经有了一点排斥。
节奏就慢慢的慢了下来。
友谊方面还是不行,虽然很多地方都能融进去,但是还是和以前一样,一但要深交就有某种恐惧,客观上来说这种应该是潜意识的影响,很多时候,我都不知道为什么就已经做出了把别人推出我舒适圈的行为。
可能还是打游击式的在各个不同程度的友谊圈子之间来回游走满足自己的情绪需要。
我还是挺自私的一个人。不是啥好人。
但是能够彻底的当一个自私的人也没什么不好的,对别人也会做一些筛选,自己会舒服一点,也不会影响看不惯我的人。
我就是这样小心翼翼的活着。
没有很强烈的想要获得什么的欲望,也没有什么很想实现的理想,更没有什么必须完成的使命。
我就是这样简简单单的活着,这样也没什么不好的。
我到现在已经想明白了,社团的工作能推就推掉,尽量降低在社团的话语权,比赛已经报名的打完,然后答应打的打完,之后就不打新比赛了。
剩下的时间就自己学点想学的,有空的时候出去转转,和别人一块到处玩,吃点好吃的。这样已经是来之不易的幸福。
希望我们都好好的。

在 VScode 中配置前端代码格式化,可以通过以下几个步骤进行:

1. 安装 Prettier 插件

Prettier 是一个流行的代码格式化工具,支持很多编程语言,包括 JavaScript、TypeScript、HTML 和 CSS。

  • 打开 VScode,点击左侧的 扩展(Extensions)图标,搜索并安装 Prettier - Code formatter

2. 配置 Prettier

通过修改 .vscode/settings.json 文件来配置 Prettier 格式化选项:

  • 在 React 项目的根目录下创建(如果没有的话)一个 .vscode/settings.json 文件,添加以下内容:

    {
    "editor.defaultFormatter": "esbenp.prettier-vscode",
    "editor.formatOnSave": true, // 保存时自动格式化
    "prettier.singleQuote": true, // 使用单引号
    "prettier.trailingComma": "es5", // 在可能的情况下,添加尾随逗号
    "prettier.semi": true, // 结尾加分号
    "prettier.tabWidth": 2 // 缩进宽度
    }

3. 配置项目中的 .prettierrc 文件(可选)

为了让团队中的每个人都使用相同的代码格式,可以在项目根目录下添加一个 .prettierrc 配置文件,内容如下:

{
  "singleQuote": true,
  "trailingComma": "es5",
  "semi": true,
  "tabWidth": 2
}

这样,无论是使用 Prettier 插件,还是通过命令行运行 prettier,都会遵循这些配置。

单调队列

单调队列相比于一般的队列来说,多了一个队尾出队。
一般的队列是秉持先进先出的原则,所以是队尾入队,对头出队。

单调队列中的元素相比于一般队列来说,多了单调性。队列内的元素始终保持单调,即单调递减或者单调递增。

队尾出对的条件:队列不空(应对第一个加入的元素)且有新元素加入时,新元素更优。
这个新元素更优分两种情况。如果是单调递增的一组元素来说。队尾进入的元素是越小越优,也就是越小越可以排到前面。所以当元素入队之后可以使用while循环对从队尾开始的每一个元素进行判断,如果比它大就踢出队列,直到队列为空或者遇到第一个比新元素小于或者等于的元素。然后将新元素加入队列。对于单调递减的一组元素来说,这个更优的情况就是元素越大越优,越可以排到前面。

队头出队的条件是队头元素滑出窗口
例程:

#include <bits/stdc++.h>

using namespace std;
int q[1000]; 
int a[1000];
int k, n;

int main()
{
    int h = 1, t = 0;
    cin >> n >> k;
    for (int i = 1; i <= n; i ++)
        cin >> a[i];
    for (int i = 1; i <= n; i ++)
    {
        while (t >= h && a[q[t]] >= a[i]) t --;
        q[++t] = i;
        if (q[h] < i - k + 1) h ++;
        if (i >= k) printf("%d ", a[q[h]]);
    }
    return 0;
} 

单调队列是用来维护一个滑动的定长窗口内的单调序列,从队头取最值,进行计算或者转移。

单调栈是维护一个固定的变长窗口[1, i]内的单调序列,从栈顶取最值,进行计算或转移。
每个元素从栈顶入栈,淘汰元素从栈顶出栈。

淘汰的机制是和单调队列相似的,也是如果要维护一个单调递减的序列,从栈顶取的是最大值,则越大越优,维护一个单调递增的序列,从栈顶取最小值,越小越优

例程:

#include <bits/stdc++.h>
using namespace std;
const int N = 3e6 + 10;
int a[N];
int q[N];
int ans[N];

int main()
{
    int n;
    cin >> n;
    for (int i = 1; i <= n; i ++)
        cin >> a[i];
    int top = 0;
    for (int i = 1; i <= n; i ++)
    {
        while (top > 0 && a[q[top]] < a[i])
        {
            ans[q[top]] = i;
            top --;
        }
        q[++top] = i;
    }
    
    for (int i = 1; i <= n; i ++)
        cout << ans[i] << ' ' ;
    return 0;
}

最近因为我的游戏本放在宿舍,在实验室只留了一个轻薄本用来远程。所以推视觉小说比较多。

有的时候在想现在的经历,觉得如果有回档就好了。我想要回到之前的某一个时间节点去做另外一个选择。

但是又转念一想,或许不同的线,命运都给我书写好了,现在做的无非就是最后到达某一个结局而已。除了有非常明确的目标,不然最后打出的都是”无好感线“,对应到现实可能就是什么都想做,却没有个明确的主线去串联起我的行为,最后就是平平庸庸泯然众人。

但是平庸也没什么不好,我现在这样并不是上天不公,或者社会不公平,可能仅仅是某一个晚上,我选择打伞去逛操场。但是在另外一条线或者另外的很多线里面,很多事情都是发生的。对于目前来说,专注于现在就好了。结局有很多,对于我个人在哲学意义上来说,单纯的为了拥有某个结局而去努力是没有意义的,因为最后的最后结局都有的。所以,不管是有明确的目标也好,还是没有,都是没关系的。

在去往某条线上的经历,那些体验过的美好,看过的风景才是重要的。