02 2022 档案

摘要:置换是一个排列到另一个排列的双射。例如 \[ \left(\begin{array}{cccccc} x & 2 & 0 & 1 & 3 \\ P(x) & 1 & 2 & 3 & 4 \end{array}\right) \] 将这个置换应用于另一个数组$[0,1,2,3]\(上,其就变成了\)[ 阅读全文
posted @ 2022-02-26 14:51 Rogn 阅读(62) 评论(0) 推荐(0) 编辑
摘要:在字符串匹配等领域,状态自动机具有很好的统一性、完整性,易于编码,不用去考虑各种边界 LC 8. 字符串转换整数 (atoi) 题解:参考官网题解 本题可以建立如下图所示的自动机: 我们也可以用下面的表格来表示这个自动机: \[ \begin{array}{|l|l|l|l|l|} \hline & 阅读全文
posted @ 2022-02-24 23:49 Rogn 阅读(304) 评论(0) 推荐(0) 编辑
摘要:理论:动态规划初步--最长上升子序列(LIS) 模板: void slove() { fill(dp, dp + n, INF); for (int i = 0; i < n; i++) { *lower_bound(dp, dp + n, a[i]) = a[i]; // *upper_bound 阅读全文
posted @ 2022-02-24 21:48 Rogn 阅读(40) 评论(0) 推荐(0) 编辑
摘要:完全背包问题 LC 518. 零钱兑换 II 题意:几种无限数量的硬币,凑成amount的方案数,方案是无序的,即1+2 和 2+1算同一种 题解: 方法一:经典背包解法 dp[i][j]表示前i种物品凑出j的方案数,考虑第i个选与不选两种情况,其中选的时候,再考虑选择第i个物品的次数。 class 阅读全文
posted @ 2022-02-24 00:16 Rogn 阅读(299) 评论(2) 推荐(0) 编辑
摘要:Linux定时器分为低精度定时器和高精度定时器两种类型,内核对其均有实现。本文讨论的是我们在应用程序开发中比较常见的低精度定时器。作为常用的基础组件,定时器常用的几种实现方法包括:基于排序链表实现、基于小根堆实现、基于红黑树实现、基于时间轮实现。本文讲解的是时间复杂度最优,也是linux内核采用的基 阅读全文
posted @ 2022-02-20 23:24 Rogn 阅读(1235) 评论(0) 推荐(0) 编辑
摘要:状压DP,是状态压缩和DP相结合,通常是将某个局面,或某种选择方案视为一个状态,状态与状态进行转移。 涉及一些位运算知识: for(int i = 0;i < (1<<n);i++) // 枚举所有的状态 i&(1<<j) // 判断i的第j位 (i>>j)&1 // 判断i的第j位,且可以取值 f 阅读全文
posted @ 2022-02-20 18:30 Rogn 阅读(363) 评论(0) 推荐(0) 编辑
摘要:计算sqrt(2),要求精确到小数点后10位。常见的有二分法,牛顿迭代法,还有利用连分数的一些迭代法。 #include<iostream> #include<vector> #include<unordered_map> #include <iomanip> using namespace std 阅读全文
posted @ 2022-02-17 20:16 Rogn 阅读(629) 评论(0) 推荐(0) 编辑
摘要:面经经常会有这样一题:对abc建立索引,查询ac时索引是否生效。先说结论:生效 我们来实际验证一下,我使用的Server version: 8.0.23 MySQL Community Server - GPL 搭建环境 创建表 CREATE TABLE `test` ( `id` int(11) 阅读全文
posted @ 2022-02-17 16:47 Rogn 阅读(190) 评论(3) 推荐(0) 编辑
摘要:长区间可以划分成相同类型、只是长度不同的短区间,就可以用区间DP来做。 区间dp的模板: memset(dp,0,sizeof(dp)); //初始dp数组 for(int len=2;len<=n;len++){ //枚举区间长度 for(int i=1;i<n;++i){//枚举区间的起点 in 阅读全文
posted @ 2022-02-17 00:03 Rogn 阅读(161) 评论(0) 推荐(0) 编辑