记录 | 大学里的最后一段时光 #日记楼

Vanitas Vanitatum Et Omnia Vanitas.

虚空的虚空,一切尽为虚空。《般若波罗蜜多心经》亦有言:“观自在菩萨,行深般若波罗蜜多时,照见五蕴皆空,度一切苦厄”。

古今中外,英雄豪杰无不如过江之鲫,于兴盛之时,凭天时地利人和,独领风骚,傲立潮头。殊不知千年之后,虽有“樯橹灰飞烟灭”之气魄,亦不免消失于滚滚历史洪流。

泛泛之辈如我,唯有专注于当下,珍惜自我所有之物,珍惜身边亲近的人,默默地走完本科的最后一段旅程。2025 年 06 月至 2026 年 06 月,我愿在此处不定期地记录下属于自己的一切。

一切皆空,唯有当下愈加贵重。万事喧嚣,愿有一方清静独处之处。愿此处小楼能成为承载我接下来一年的喜怒哀乐,愿自己能够在互联网的一角,留下属于自己的一点点痕迹。

开楼就用我最喜欢的一部动画《可塑性记忆 (プラスチックメモリス)》中的题词送给大家,也送给自己:

愿你有朝一日,能与珍爱之人再次相逢大切な人と、いつかまた巡り会えますように

提示:可能有时候 lz 会有很负面的情绪,或者不恰当的表述,先向大家表示抱歉,如果楼主说了什么不太好的话或者令大家伤心的话,提示一下 lz 或者屏蔽楼主就好了,先向大家表示歉意,对不起,谢谢大家 :smiling_face_with_three_hearts:

楼里会有什么?

  • 可愛いアイラちゃん
  • 各种可能的动漫截图
  • 每天的生活
  • 风景图?周边地图?
  • :pig_face: :face_savoring_food: :clown_face:
  • lz 的焦虑和不安 (很抱歉,有时候控制不了自己 :smiling_face_with_tear:)
  • 可能的焦虑传播 (对不起,请一定要提醒 lz 删除(私信发帖都可以))
  • 可能的压力和不安
9 Likes

cy :tieba_huanhu:
是新日记楼!
祝 lz 生活顺利:face_holding_back_tears:

1 Like

开篇先给出自己的假期计划吧!
古人有云:“取法乎上,仅得其中。取法乎中,仅得其下。”所以目标要兼具挑战性和可行性。
暑假的三个月打算:
上午 7:00 左右起床
上午:leetcode,复习数据结构,与其他 408 科目,顺序打算为数据结构 → 计算机组成 → 操作系统 → 计算机网络。这些科目アイラちゃん在期末都是 90 分左右,因此希望会顺利一些 QAQ,为考研/推免都做好两手准备 :melting_face:
中午/下午:做实验室实习的项目/阅读需要阅读的论文,或者在没有活的时候做一做 15445/6.824,学习 C++/Go。毕竟有希望就要去争取!
晚上:继续复习高数/线代。等到线性代数复习结束后再开概率论和数理统计。并且最后复习一些单词(不过英语应该不需要太担心,アイラちゃん很努力地通过了 Toefl, R25L25S25W26!)
希望自己能完成这个暑假的计划,fight on!!!

1 Like

cy :shuiyuan3:
アイラちゃん(指插图中的艾拉)今日もちょ可愛いです :smiling_face_with_three_hearts:

2 Likes

:smiling_face_with_three_hearts:

3 Likes

:smiling_face_with_three_hearts: :smiling_face_with_three_hearts:
艾拉可爱捏
如果能让アイラちゃん做我的彼女我就算住大别野也愿意口牙 :bilibili_aojiao:

3 Likes

2025 年 5 月 30 日 星期五 天气:晴/多云

上午刷 leetcode,复习了一下 dijkstra 算法,正好今天的每日一题也是 dijkstra 算法~

2359. 找到离给定两个节点最近的节点

C++
class Solution {
    int n;
public:
    void bfs(const vector<vector<int>> & graph, priority_queue<pair<int,int>, vector<pair<int,int>>, greater<pair<int,int>>> & pq, vector<int> & distance, vector<int> & visited, const int & node) {
        visited = vector<int>(n, 0);
        pq.emplace(0, node);
        visited[node] = 1;
        distance[node] = 0;

        while(!pq.empty()) {
            const auto [dist, cur] = pq.top();
            pq.pop();
            for(const auto & adj: graph[cur]) {
                if(distance[adj] > distance[cur] + 1) {
                    distance[adj] = distance[cur] + 1;
                    pq.emplace(distance[adj], adj);
                }
            }
        }
    }
    int closestMeetingNode(vector<int>& edges, int node1, int node2) {
        n = edges.size();
        vector<vector<int>> graph(n);
        for(int i = 0; i < n; i++) {
            if(edges[i] == -1) continue;
            graph[i].emplace_back(edges[i]);
        }
        priority_queue<pair<int,int>, vector<pair<int,int>>, greater<pair<int,int>>> pq;
        vector<int> distance1(n, INT_MAX / 2);
        vector<int> distance2(n, INT_MAX / 2);
        vector<int> visited;

        bfs(graph, pq, distance1, visited, node1);
        bfs(graph, pq, distance2, visited, node2);

        // Get the distance. Then check the answer.
        int ans_dist = INT_MAX / 2;
        int ans = -1;

        for(int i = 0; i < n; i++) {
            int tmp_ans = max(distance1[i], distance2[i]);
            if(ans_dist > tmp_ans) {
                ans_dist = tmp_ans;
                ans = i;
            }
            else if(ans_dist == tmp_ans) {
                ans = min(ans, i);
            }
        }
        return ans == INT_MAX / 2 ? -1 : ans;
    }
};

2642. 设计可以求最短路径的图类

C++
class Graph {
    vector<vector<pair<int,int>>>graph;
    vector<int> visited;
    vector<int> distance;
    int n;
public:
    Graph(int n, vector<vector<int>>& edges) {
        graph = vector<vector<pair<int,int>>>(n);
        for(const auto & edge: edges) {
            int from = edge[0], to = edge[1], edgeCost = edge[2];
            graph[from].emplace_back(to, edgeCost);
        }
        Graph::n = n;
    }
    
    void addEdge(vector<int> edge) {
        int from = edge[0], to = edge[1], edgeCost = edge[2];
        graph[from].emplace_back(to, edgeCost);
    }
    
    int shortestPath(int node1, int node2) {
        priority_queue<pair<int,int>, vector<pair<int,int>>, greater<pair<int,int>>> pq;
        visited = vector<int>(n, 0);
        distance = vector<int>(n, INT_MAX / 2);
        pq.emplace(0, node1);
        distance[node1] = 0;
        while(!pq.empty()) {
            const auto [dist, cur] = pq.top();
            pq.pop();
            if(visited[cur]) continue;
            visited[cur] = 1;
            for(const auto & adj: graph[cur]) {
                const auto [adj_to, adj_w] = adj;
                if(distance[adj_to] > distance[cur] + adj_w) {
                    distance[adj_to] = distance[cur] + adj_w;
                    pq.emplace(distance[adj_to], adj_to);
                }
            }
        }
        return distance[node2] == INT_MAX / 2 ? -1 : distance[node2];
    }
};

/**
 * Your Graph object will be instantiated and called as such:
 * Graph* obj = new Graph(n, edges);
 * obj->addEdge(edge);
 * int param_2 = obj->shortestPath(node1,node2);
 */

3342. 到达最后一个房间的最少时间 II

C++
constexpr int directions[4][2] = {{-1,0},{1,0},{0,-1},{0,1}};
class Solution {
public:
    int minTimeToReach(vector<vector<int>>& moveTime) {
        // [dist, x, y];
        priority_queue<tuple<int,int,int>, vector<tuple<int,int,int>>, greater<tuple<int,int,int>>> pq;
        pq.emplace(0, 0, 0);
        int rows = moveTime.size(), cols = moveTime[0].size();
        vector<vector<int>> distance(rows, vector<int>(cols, INT_MAX / 2));
        vector<vector<int>> visited(rows, vector<int>(cols, 0));
        distance[0][0] = 0;

        while(!pq.empty()) {
            const auto [dist, x, y] = pq.top();
            pq.pop();
            if(visited[x][y]) continue;
            visited[x][y] = 1;
            for(int i = 0; i < 4; i++) {
                int nx = x + directions[i][0], ny = y + directions[i][1];
                if(nx >= 0 && nx < rows && ny >= 0 && ny < cols) {
                    int temp_distance = max(dist, moveTime[nx][ny]) + (x+y) % 2 + 1;
                    if(temp_distance < distance[nx][ny]) {
                        distance[nx][ny] = temp_distance;
                        pq.emplace(temp_distance, nx, ny);
                    }
                }
            }
        }
        return distance[rows - 1][cols - 1];
    }
};

跟着 灵神的题单 走感觉有进步的说!

然后折磨アイラちゃん四天只睡了 16 个小时的 PPG 算法也算是成功实现了,并且确实收敛的速度更快,只是为什么稳定性不好呢 QAQ

下午上数据库原理课,听不懂事务系统 :pig_face: 时间戳控制事务法和 2PL 法更是稀里糊涂 :melting_face: 后面暑假再仔细看看吧~反正不考

晚上学了一下 Go,这门语言还是很有属于自己的风范的,感觉有集百家之长的特性,希望我能稍微掌握一下吧~(这也是兴趣的一部份呢)

最后,提前祝大家晚安好梦的说! :smiling_face_with_three_hearts: 也祝大家期末顺利!

1 Like

口瓜怎么日记帖被拿下了 :smiling_face_with_tear: 5 月 30 日的日记贴变成垃圾消息被 Akismet ちゃん拿下了 :pleading_face:

是不是主包发 leetcode 题目和代码重复性太高被拿下了 :melting_face:

1 Like

我们土塬貌似是这样的:thinking:不时会出现这种吞帖的情况
感觉可以向站务提出说明?

1 Like

站务应该会看到的,就不再单独麻烦他们了 :pleading_face:

akismet ちゃん好严厉,有坏坏的大姐姐感觉 :rofl:

豪德 :melting_face:

1 Like

好饿,出去觅食了 :pig:
好耶,帖子回来啦 :smiling_face_with_three_hearts:
谢谢站务 :face_blowing_a_kiss:

4 Likes

有 C/C++ 基础看起一门新的语言还是很快的,只是迫切地需要熟练度

从例子入手后再去仔细地阅读语法,希望这样能够快速入门 Go, 然后尝试 6.824

p.s.现在变成 6.5840 了,待我学会 go+ 有时间后尝试一下 :face_savoring_food:

2 Likes

每日一题 还是可以 Dijkstra 的,毕竟 Dijkstra 就是 BFS 中的队列->优化队列而已~

909. 蛇梯棋 (2020M)(2025.05.31)

坐标变换让我成为 :pig:

C++-1 (Dijkstra)
class Solution {
public:
    int n;
    int CheckTransfer(int nums, vector<vector<int>> & board) {
        int row, col;
        if(nums % n == 0) {
            row = n - nums / n;
            if(row % 2 != n % 2) {
                col = n-1;
            }
            else {
                col = 0;
            }
        } else {
            row = n - 1 - nums / n;
            if(row % 2 != n % 2) {
                col = (nums % n) - 1;
            }
            else {
                col = n - (nums % n);
            }
        }
        
        // // ** debug **
        // cout << nums << " at: (" << row << " ," << col << ")\n";
        return board[row][col]; 
    }
    int snakesAndLadders(vector<vector<int>>& board) {
        // Build Matrix.
        n = board.size();

        vector<int> distance(n*n+1, INT_MAX / 2);
        vector<int> visited(n*n+1, 0);
        priority_queue<pair<int,int>, vector<pair<int,int>>, greater<pair<int,int>>> pq;
        pq.emplace(0,1);
        distance[1] = 0;
        while(!pq.empty()) {
            // BFS to get the adjacent point.
            const auto [dist, cur] = pq.top();
            pq.pop();
            if(visited[cur]) continue;
            visited[cur] = 1;
            for(int i = cur + 1; i <= min(cur + 6, n * n); i++) {
                int transfer = CheckTransfer(i, board);
                int adj = transfer == -1 ? i : transfer;
                if(distance[adj] > distance[cur] + 1) {
                    distance[adj] = distance[cur] + 1;
                    pq.emplace(distance[adj], adj);
                }
            }
        }
        return distance[n * n] == INT_MAX / 2 ? -1 : distance[n * n];
    }
};
C++-2 (BFS)
class Solution {
public:
    int n;
    int CheckTransfer(int nums, vector<vector<int>> & board) {
        int row, col;
        if(nums % n == 0) {
            row = n - nums / n;
            if(row % 2 != n % 2) {
                col = n-1;
            }
            else {
                col = 0;
            }
        } else {
            row = n - 1 - nums / n;
            if(row % 2 != n % 2) {
                col = (nums % n) - 1;
            }
            else {
                col = n - (nums % n);
            }
        }
        
        // // ** debug **
        // cout << nums << " at: (" << row << " ," << col << ")\n";
        return board[row][col]; 
    }
    int snakesAndLadders(vector<vector<int>>& board) {
        // Build Matrix.
        n = board.size();

        vector<int> visited(n*n+1, 0);
        queue<pair<int,int>> q;
        q.emplace(1, 0);
        while(!q.empty()) {
            // BFS to get the adjacent point.
            const auto [cur, dist] = q.front();
            q.pop();
            visited[cur] = 1;
            for(int i = cur + 1; i <= min(cur + 6, n * n); i++) {
                int transfer = CheckTransfer(i, board);
                int adj = transfer == -1 ? i : transfer;
                if(visited[adj]) continue;
                if(adj == n * n) return dist + 1;
                visited[adj] = 1;
                q.emplace(adj, dist + 1);
            }
        }
        return -1;
    }
};
成就 badges

不知不觉三个月了,希望有点进步的说

被 xiong 器裹挟的アイラちゃん

今天是端午节,祝塬友们端午快乐!
也祝 @萨卡兹雇佣兵 生日快乐 :smiling_face_with_three_hearts:

3 Likes

谢谢泥喵 :cherry_blossom_cat:(话说我也谢了泥好多次了 :zany_face:

1 Like

惊觉一门课下周四有随堂考还有 40% 的分数
天塌了,我说怎么这门课没有大作业,原来是今天跟我说改成随堂考了
好好好 :pleading_face:

发挥优良传统,一支笔,一个 graffiti,一个晚上,一个奇迹 :pig:

1 Like

好乐,难得见一个不骂的

1 Like

2025 年 5 月 31 日
今天是五月的最后一天!端午假期快乐!

前情提要:up_arrow:

于是战复习,复习模型压缩,剪枝,量化策略,复习 TPU 脉动阵列模型,数据流不变方式复用比,amdahl 定理,并行加速比 :sleeping_face:

不过已经复习完一半了!明天就可以复习结束的说!
明天可能要下大暴雨了,真讨厌下雨啊,每次鞋都会湿完,但是还是得来图书馆的,在宿舍只想睡觉就好了 :pig:

骑士团和狐狸小队的麻麻们

最后,祝大家晚安好梦~

4 Likes

口瓜,已经下雨了,怎么回事口牙

3 Likes