- 博客(122)
- 资源 (15)
- 收藏
- 关注
原创 字符串 (2)--- 前缀函数与 KMP 算法
/pi[i]: 子串s[0...i]最长的相等的真前缀与真后缀的长度。最小周期: n - pi[n -1]
2023-07-25 11:18:39
197
原创 DP(9)--插头DP
再添加一个表示没有左插头的位,就表示出了下一行行首的状态,为了方便写,在代码里,用dp[i][0][mask]表示转移后的上一行行末状态。if (path[i+1][j] && path[i][j+1]) // 生成一对新插头。// 左插头,上插头。~arr[code[i]]) // arr[] 为 -1, 即出现一个新的连通分量,添加新编号。
2023-05-06 15:12:26
648
原创 DP(6)--树形DP
状态方程: dp[x][j]=max(dp[x][j],dp[x][j−k]+dp[y][k])(k∈[0,j))f[u] = max(f[u], f[son[i]] + 从u遍历到son[i]所经过路径花费的时间);(2)头结点组数: head[], head[i]存以i为起点的第一条边的下标(在edge[]中的下标)// f[i][]: 以i为根的子树的最优解, f[i][0]: i不参加;f[i][1]: i参加。// f[i]-g[i]: 为遍历i子树的结余时间,按结余时间降序排列。
2023-03-20 15:17:04
270
原创 递归与尾递归
递归:(1)每一级的函数调用都有自己的变量和返回。(2)递归函数中,位于递归调用前的语句和被调用函数具有相同的执行顺序,位于递归调用后的语句的执行顺序和被调用函数的顺序相反#include<stdio.h>void recursive(int n){ printf("Begin %d\n", n); if (n<4) recursive(n+1); printf("End %d\n", n);}int main()...
2022-05-27 16:09:13
389
原创 最大子序列和 ---- 联机算法(数据结构与算法分析 2.4.3)
最大序列和的问题:如果子序列由一个负数a[i]开头,那么这个子序列的和必然不能是最大的,因为a[i+1]开头的子序列必然更大,所以,i可以推进到i+1。推广一下,如果a[i]到a[j]的子序列和是负数,那么包含这个子序列的序列和也不可能是最大的,因此,把i推进到j+1是没有风险的。在扫描的过程中,不断的用当前和更新最大和,如果当前和可为后续序列和做贡献,则当前和应该大于等于0;否则,将当前和置为0.int MaxSubsequenceSum(const int A[], int N).
2022-05-23 11:03:50
224
原创 OneDrive 个人版上传大文件
上传大文件每个fragment不能大于60Mb,必须一片上传完才能续传下一片,所以,得用异步http, blob.slice() 为右半开区间 [ ) var maxUnit = fileSize < (60 * 1024 * 1024) ? fileSize : (60 * 1024 * 1024) - 1; for (var i = 0; i < fileSize; i +=...
2020-10-22 15:41:57
908
原创 Windows 打印流程
(1)应用程序通知打印池开始一个新的打印任务(2)打印池调用打印驱动dll,显示打印对话框,并将打印设置信息传给它(3)应用程序调用GDI进行图形绘制(4)GDI将应用程序的绘图调用保存在EMF文件中,记录完毕将之发送给打印池(5)GDI返回,应用程序完成一次假脱机打印过程,可以进行其他任务(6)打印池调用GDI,把EMF文件中的绘图命令一条条分解到打印机上下文中(7)GDI...
2019-02-20 09:06:14
2504
1
原创 dm9000 网卡驱动
(1)1582 module_init(dm9000_init);(2)1568 static int __init1569 dm9000_init(void)1570 {1571 printk(KERN_INFO "%s Ethernet Driver, V%s\n", CARDNAME, DRV_VERSION);15721573 return p...
2018-07-26 15:20:48
363
原创 算法设计与分析基础学习笔记--第二章
汉诺塔问题 场景一: 有三根杆子A,B,C。A杆上有N个(N>=1)圆盘,盘的尺寸由下到上依次变小。 把A上的圆盘从下面开始按大小顺序重新摆放在C柱子上。并且规定,在小圆盘上不能放在大圆盘上,在三根柱子之间一回只能移动一个圆盘。 对于任意N,最少要移动多少次? 使用数学归纳法 当N为1时,需要1次 当N为2时,A-->B, A-->C, B-->C, 需要3次
2018-01-26 16:18:26
384
原创 算法设计与分析基础学习笔记--第一章
第一章欧几里德算法又称辗转相除法,用于计算两个整数a, b的最大公约数。基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd(b,r),即gcd(a,b)=gcd(b,a%b)证明:(1)假设d是a,b的一个公约数,a可以表示成a = kb + r,则r = a % b,则有d|a, d|b, 而r = a - kb,故 d|r,因此d是
2018-01-16 15:57:10
347
原创 fork详解
1 #include 2 #include 3 #include 4 5 int main() 6 { 7 pid_t fpid = 0; 8 printf("son/pa ppid pid fpid\n"); 9 10 fpid = fork(); 11 if (0 =
2017-11-14 14:36:16
290
原创 硬币问题
有1元,2元,5元面值的硬币若干枚,如何用最少的硬币凑出11元面值如果用最少的硬币凑出n元(n (1)当我们遇到一个大问题时,总是习惯把问题规模变小,这样便于分析(2)规模变小后的问题和原来的问题是相同性质的,本质上还是一个问题dp[n]: 最少需要多少个硬币来凑足n元那么dp[0] = 0dp[1] = 1, 凑足一元最少需要一个一元的硬币dp[2] = mi
2017-10-16 13:57:16
371
原创 192. Word Frequency
统计文件中单词出现频率Write a bash script to calculate the frequency of each word in a text file words.txt.For simplicity sake, you may assume: words.txt contains only lowercase characters and space
2017-08-23 15:30:39
261
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人