算法
28 条原话摘录。? 是还没答的问题。
←→ 切主题 · J/K 选择 · L 胶片时间线
格雷码形成一个环,没有开头结尾,可从任何地方开始异或一个数字,像把格雷码序列环上的指针移到它上面整数 >>1 把高位错到低位,异或结果只取决于原最高位格雷码逆推可以一路递推,类似于差分核心转换链:模拟 → 杨辉三角 → 组合数 → 拆模数 → Lucas模 10 不是质数,所以必须拆成 mod 2 和 mod 53463 看上去还是模拟题,结果一写就超时背包 DP 本质是在维护多项式系数,可进一步转成多项式乘法用 FFT/NTT二维 DP 前期未知状态太多,只能先从小的集合递推一维与二维写法思路刚好是相反的,一个从小推大,一个大中查小减法在这里意味着已经选中该 num,背包容量相应减小回溯法枚举所有子集的分支数是 O(2ⁿ),看着像两层循环其实不是D 算法的作用大致可以描述为阻尼I 算法像滚雪球一样越滚越大,用来消除稳态误差调节 D 算法,使 P 算法的作用减弱接受率随温度下降,好像分子随机运动也随之减弱真实数据充满锯齿并不光滑,用模拟退火未尝不是好办法哈希表的原理就是抓住唯一特性:值即 key定步长梯度下降能估极值点大概位置,可判断算法正确性记忆化搜索把 memo 写在 dfs 里,向下搜索时先查它取 max 以避免负下标,相当于省下条件语句找到满足精度 1e-5 的最小 n = 179,加个判断就能防超时递归只是运行时替我们维护的调用栈,所以能用 step / pc 手工把递归写成迭代BFS 队列应写进函数内部,每发现一块陆地新建一个,而不是当共享队列参数传入能跑过测试的代码其实还是 DFS 风格:先找邻接点入队,再出队递归旧代码像挨个点名寻找共犯,要队列里的第一个人供出同伙,新同伙排到最后改后代码像小丑抛球,球在空中一直飞,越抛越多,然后又依次抛出BFS 只是标记整块陆地的手段,因此仍需要对整个地图遍历