必要的分类讨论 交叉路口过车可行方案 LCP 43. 十字路口的交通 数学 - 拿石子 [[比较难的博弈问题]] 直线上最多的点数 149. 直线上最多的点数 真暴力的话,我都想不出来怎么遍历所有情况123456789101112131415161718192021222324func maxPoints(points [][]int) int{ ans := 0 n := len(points) 2024-09-17 刷题记录
比较难的博弈问题 拿石子问题一般考虑两种方法: 思考问题的规律,直接根据某些特性进行判断 递归 0917(Li) 两堆石子,你先拿。每次只能从数目多的堆中拿石子,且拿的石子数为另一个堆的整数倍。能拿到某个堆最后一个石子的人获胜。问:你是否能获胜? 思考了很久:方法一 - 直接找出特性 -> 没有想出来 转递归方法: 12345678910111213141516bool dfs(int x, int y 2024-09-17 刷题记录
二进制集合操作 参考 oi wiki 基础一个整数的二进制可以看作是一个集合(0表示在,1表示不在),但是该集合中元素的数目有限 n-1一个数n,n-1表示:将最低位1删除,且后续的所有0变为1 快速判断一个数是否为2的非负整数幂1bool isPowerOfTwo(int n){return n > 0 && ((n-1)&n) == 0;} 子集遍历123 2024-09-17 刷题记录
常见BUG 32位整形溢出 比较经典的是时间比较,需要考虑溢出情况1if (lower - greater > 0x7FFFFFFF) {ok, smaller is true} 2024-09-17 嵌入式-开发
Linux - 进程-线程-内核线程概念区分 父进程与子进程 父子进程虚拟内存空间 通过vfork/clone系统调用创建出的子进程(线程)共享父进程的虚拟内存空间:即直接将父进程的虚拟内存空间结构体「struct mm_struct」的地址赋值给子进程中的虚拟内存空间结构体指针,并增加父进程虚拟内存空间结构体的引用计数;即子进程不含有「struct mm_struct」的内存 通过fork系统调用创建出的子进程,则将父进程的虚拟内存空间以 2024-09-09 操作系统
Linux - 虚拟内存管理 - 内核空间 参考 xiaolin bin的技术小屋 详细描述了内核虚拟空间每个虚拟内存区域的作用 内核虚拟内存空间 64 位体系下的内核虚拟内存空间与物理内存的映射就变得非常简单,由于虚拟内存空间足够的大,即便是内核要访问全部的物理内存,直接映射就可以了,不在需要用到《ZONE_HIGHMEM 高端内存》中介绍的高端内存那种「动态映射方式」 32位系统 64位系统 ![[2907560-2 2024-09-08 操作系统
Linux - 虚拟内存管理 参考文章 bin的技术小屋 阅读总结用户空间应用程序在用户空间时,只能看到用户空间的虚拟地址:无需关注具体对应的物理内存;其虚拟地址内存空间到物理内存空间的映射由内核管理陷入内核后,程序只能看到内核空间的虚拟地址;由于内核态管理整个物理内存空间,因此处于内核态时一定要能看到整个物理内存空间。内核虚拟空间大小有可能小于实际的物理内存空间大小「32位系统内核空间只有1G,而物理内存空间最大可以到4G 2024-09-08 操作系统