2026了,但是没有好好的在博客上面写过新年祝福。
应该说去年10月份之后就没有再发过博客了。
其实期间一直有在酝酿,但是一直写不出来。
感觉每每情绪到了某一个节点之后总是差一点。
(当然也有总是被什么事情拖着,不能静下心来
我以前一直是那种有点幻想的人,同时也是很卑劣的人。
现在已经没有幻想了,只剩卑劣了。
我认为我很卑劣的原因是因为我不是很想为群体付出什么,从旁观者来看,这种不为集体做贡献的人明显是卑劣的。
实际上我只是懒,其实就算是对自己也称不上有多称职。假设真的有一本人生说明书摆在我的面前。我可能,哦不,应该说是肯定只会在翻上几页之后就兴致缺缺,并吹个口哨,对空气说:“哎呀,其实没必要看什么说明书的”。
我的卑劣不仅仅体现在这里其实也体现在其他地方,但是因为实在太多就不一一列举了。实际上,我其实也无法准确的说出我卑劣的地方。我只是隐隐有一种感觉就是我是一个卑劣的人。
但是其实这是没有关系的,因为我其实是一个极有分寸的人,诚然,我不会对除自己之外的其他人做额外的义务,但是也不会过多的,或者说是很讨厌去麻烦别人。
在以前我就是一个很害怕和别人做交流的人,因为害怕受到伤害。
后面我就渐渐发现其实不和别人做交流确实受不到伤害。但是这样之后我的社交能力就越来越弱了。
我很讨厌成为领导者的原因也是在这边,实际上我并没有无私奉献的精神,是一个很自私的人,也没有责任心。
以前没有觉得,现在认为主动去当某个集体的领袖,如果无利可图,并且也没有情绪价值,真的会很痛苦。
除非说有某种信念。
实际上所有困难的事情,如果没有外驱力,也没有某种信念是很难坚持的。
我可能是有某种信念的。
最近一直在做的事情主要就是当社长,当社长实际上就是当老师的传话筒,并且跑跑腿。

在 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;
}

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

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

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

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

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