Skip to content
败犬日报 2025-12-04

败犬日报 2025-12-04

1. 面试题:n 只乌龟有重量和承载能力,问最多叠多少只乌龟

假设重量 wi,承载能力 vi,n105

首先是 O(n2) 的算法。

我们从上到下叠乌龟,按照 wi + vi 排序,必定是从小到大放。这是因为,如果一种可行的堆叠方式,上下相邻两个乌龟不满足 w1 + v1 ≤ w2 + v2,把它们交换也是一种可行的堆叠方式(要列一些公式证明,略)。

于是可以用动态规划,排序后 dp[i,j] 表示前 i 个乌龟选 j 个重量最小是多少。

当然这个做法不够完美,因为 n105 会超时,但至少在面试里有东西说。


O(nlogn) 的算法是 Moore-Hodgson's Algorithm,一个关于任务调度的算法。这里就不展开说了,我懒得看。

2. Claude Opus 4.5 的灵魂文档被人逆向提取!Anthropic 负责人承认属实(文章)

https://mp.weixin.qq.com/s/9KTOyWEt-I0G8y-ojrrDfQ

3. c++ 数组初始化可以用 [0] = 0(指派初始化)吗

不支持,因为等号初始化、大括号初始化是两种不同语义,大括号无法支持(理由是下面的代码)。而只支持等号初始化的话,估计是认为不够全面,干脆不支持了。

cpp
struct S1 { int x; };

struct S2 {
    S2() {}
    S2(auto&&) {}
};

int main() {
    S1 s1 = {
        .x{}  // 注意里面可以没有 =
    };

    constexpr int x = 0;
    S2 s2[1] = {
        [x] {}  // 这是?lambda 大人!
    };
}

4. 反射为什么拖到 C++26

C++20 委员会肉眼可见的忙,C++23 因为疫情摸个鱼。

但是想 C++23 进也不太可能,推反射那群人是 23 年下半年开始全力推,今年上半年加班才赶上 ddl。

5. 如何评价:“要是委员会足够聪明,在 98 年就能把后来的特性都加入,就没那么多问题了”

世界上不存在你所谓的“聪明”。计算机体系结构、软件架构、软件工程理论都是持续进化的,语言的迭代也是在不断实践过程中发生的。

—— bincat