- 博客(125)
- 收藏
- 关注

原创 一些函数要记的函数笔记 一些玄学操作
关闭同步流 std::ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);求二进制 1的个数。int n = 15; //二进制为1111 二进制1的个数cout<<__builtin_popcount(n)<<endl;//输出4int n = 15;//二进制为111...
2018-07-25 10:28:54
440
原创 网易秋招面试
一面一个概率题不记得是啥了一个排错题 问了register + const 有啥优化, voliate一个数据库语法(没写出来)8个排序内存对齐问题,计算结构体的大小(指针大小,虚拟地址)C++11里面右值引用问题,拷贝构造函数,赋值函数,移动拷贝函数的调用情况.编译链接问题,如果两个cpp文件同时定义了一个变量,重定义在哪个阶段。4区问题namespace 的使用二面项目面全是项目MMU单元设置上下文切换cacheLine TLB问题三面IO复用,EPOLL两种工
2020-09-09 10:30:00
331
原创 腾讯笔试第5题
题意: 大概就是两种颜色的数,数字是1 - n的,总共2n个数,然后每次可以交换相邻两个数字,最后让两种颜色的数字都是从小到大排序的。举个例子RBBRBR 颜色231123最终要结果是RRBBBR121233也就是把R1移到了最前的位置,B3移到了B2后面。这样总共交换了5次,所以结果是 5。题解: dp[i][j] 表示状态为前 i + j 已经放了i个红色,j个黑色,那么后面一个要么把 i + 1 的红色移到后面,要么是 把j + 1的黑色移到后面。所以只要知道这两种状态的移到后面来需要
2020-09-08 16:35:07
371
原创 简单记录一下春招旅程 腾讯&字节
去了字节,腾讯offer 给的太慢了,等了两个星期。本来以为没时间面字节了,结果字节两天全部搞定了。。。,给了口头offer。投腾讯有点毒瘤,点了一下内推链接,直接把我简历投递了。然后顺便就过了。腾讯两面一面linux 进程 和内存共享内存了解吗有哪些锁机制编译器 选项用过哪些Linux命令 (说了一些常用的)shell 脚本了解吗 (这个没用过就没问了)C++有什么特点浮点...
2020-04-02 13:01:24
472
原创 简单做个实验分析一下 new/new[] 和 delete/delete[]
先来介绍下流程。new/new[],他的流程是先开辟了一个空间,然后调用了构造函数。delete/delete[]先调用析构函数,然后释放内存。那么如果new/delete和new[]/deletep[没有配对会出现什么问题。对于这个问题我做了简单的实验。非基础类型也就是自己写的类。先说下结论delete释放new[]只会调用第一个的析构函数,导致内存泄漏。delete[]...
2020-03-05 12:10:59
354
原创 select多路复用 源码剖析
简单说一下5种IO阻塞IO: 一直等待知道数据到来。非阻塞IO: 直接返回有没有数据,没有就直接返回错误。IO复用:将多个IO,放在一起,一个个轮询。信号驱动:设置一个信号,当有IO的信号的时候告诉我。异步IO:直接丢给别人做。可以去看看这个博客。select是IO复用的一种。函数原型如下。int select (int __nfds, fd_set *__restrict ...
2020-02-24 18:52:31
420
原创 简单研究C++ 对象内存布局
关于C++对象布局 看了大佬的博客,大佬的博客过于久远格式比较清奇,我整理了,顺便改了程序能够在 64位机运行。单一的一般继承通俗的讲,一层层下去。#include<iostream>using namespace std;class Parent{public: long iparent;//因为是64位机,所以改成了 long Pare...
2020-02-16 23:30:54
182
原创 C++ 虚拟继承对象布局
自己做实验的时候发现和一些文章上面的有点不一样。#include <iostream>using namespace std;class B{public: long ib; long cb;//全都定义成 long 这个方便看内存,不然不是对齐的public: B() :ib(0x1010), cb(0x1010) {} virtual...
2020-02-16 23:29:43
297
原创 MIT 6.828 (六) Lab 6: Network Driver (default final project)
哦豁,到了这章,大佬的博客已经没了,要靠自己翻译了。Lab 6: Network Driver (default final project)IntroductionLab6 是最后一个实验了,做完这个,一个简单的内核就已经实现了,现在你可以自己做自己的内核。现在,你有一个文件系统,操作系统没有网络堆栈。在这个实验室里你要编写一个网络接口卡的驱动程序。该卡将基于Intel 82540EM芯...
2020-02-06 14:38:05
1225
原创 MIT 6.828 (五) Lab 5: File system, Spawn and Shell
重要的前面基本上已经做了,现在就剩下lab5了。对于这个实验本身要你写的代码不多,但是要自己去看的贼他妈的多。原谅我复制粘贴别人的。Lab 5: File system, Spawn and Shell在本实验中,我们将实现spawn库调用用以加载和运行磁盘上的可执行文件。然后,JOS内核和库构成的操作系统将足以在控制台上运行shell了。这些功能需要一个文件系统,本实验将介绍了一个简单的读/...
2020-02-02 12:05:35
1095
原创 MIT 6.828 (四) Lab 4: Preemptive Multitasking
为了方便查看最终源码,我将代码放到了我的github上。后面会把前面lab的也会添加进去。lab4有很多细节,所以有些东西我会分一下测试程序。因为这个实验内容有点多分成了两篇。Lab 4: Preemptive MultitaskingPartA:为JOS增添多处理器支持特性。实现round-robin scheduling循环调度。添加一个基本的环境(进程)管理系统调用(创建和销...
2020-01-30 12:50:03
2138
原创 MIT 6.828 (三) Lab 3: User Environments
Lab 3: User EnvironmentsIntroduction在这个实验中,我们将实现操作系统的一些基本功能,来实现用户环境下的进程的正常运行。你将会加强JOS内核的功能,为它增添一些重要的数据结构,用来记录用户进程环境的一些信息;创建一个单一的用户环境,并且加载一个程序运行它。你也可以让JOS内核能够完成用户环境所作出的任何系统调用,以及处理用户环境产生的各种异常。Getting...
2020-01-18 19:05:01
1809
1
原创 MIT 6.828 (二) Lab 2: Memory management
Lab 2: Memory management做这个实验之前首先需要知道什么是分页。分段在这个实验里面没用到过。前面是一大堆教你怎么获取lab2资源的,我不知道怎么弄,后来乱搞了一下,就把lab1的覆盖掉了,变成了lab2。这个我相信就我不懂。Part 1: Physical Page Management第一个是物理页面管理。boot_alloc() //这个是系统加载前做个物理内...
2020-01-10 23:03:49
1551
原创 MIT 6.828 (一) Lab 1: Booting a PC
获取完资源就开始干了。我这里就做了个大概的内容分析,具体的还是跟着那几个大佬吧前面一大堆都是没用的,就是告诉一些作业的提交。Part 1: PC Bootstrap这个并没有要你做啥,就是让你 熟悉下汇编。然后让你知道怎么运行那个内核的,这些都是些不用讲的东西,看看就行了。说一下,这个内核退出说是ctrl+a x,意思是先按ctrl+a,再按x然后就开始来重点了,第一个是让你知道现在...
2020-01-06 19:20:32
1026
原创 MIT6.828 (零)提前做好送人头准备 随时跑路
被某个大佬带入坑,看看了评价好像确实不错,所以就开始干了。首先第一件事就是搜索资源,像我这么菜的,要是没人告诉我怎么做,基本上是没啥希望的。资源第一个肯定就是官方的了,另外还有,2019的.然后就是一些比较好的大佬的资源。知乎超级详细的某个大佬2014 大佬github这个也是有些应该够用了,也许够了,嗯,也许够了,因为我也只是刚开始。。虚拟机如果做的事 2018年之前的 随...
2019-12-31 20:20:24
1449
1
原创 manjaro18 xfce版 终端字体间距贼大
sudo pacman -S wqy-bitmapfontsudo pacman -S wqy-zenhei
2019-12-16 23:50:34
3620
1
原创 linux0.11操作系统源码剖析fork.c
fork() 用于创建 一个新的进程,一次调用两次返回。父进程返回子进程的PID 子进程是 0.fork() 采用写时复制,也就是 创建的时候 就复制了页表,并没有实际的内存空间,子进程这个时候和父亲共享内存,但是子进程只有 读的权限,当修改的时候 才复制一份。知乎大佬的nettle的回答:linux下的fork()函数传统的fork()系统调用直接把所有的资源复制给新创建的进程.lin...
2019-12-14 13:55:45
936
原创 linux1.0操作系统源码剖析 sched.h sched.c
#ifndef _SCHED_H#define _SCHED_H#define NR_TASKS 64 //系统最多的进程数#define HZ 100 // 系统时钟频率 100HZ#define FIRST_TASK task[0] //任务0是 比较特殊 init()#define LAST_TASK task[NR_TASKS-1] //任务数组里...
2019-12-12 15:56:56
1611
2
原创 leetcode-4. 寻找两个有序数组的中位数
这题挺有意思的,一开始想了半天怎么处理细节,想了半天,没想出来,要不暴力所有情况,结果特么还跑的飞快。这题看一眼肯定知道是二分,两个有序数组,找合并之后的中位数。难搞的就是会出现相同数字,和数组长度是偶数。所以我就搞了一个函数 直接找第 k 个在哪,然后第K个在哪,因为 第 k个可能在第一个数组,又有可能在第二个数组,所以要找两次,找的时候把引用换一下就行了。贼麻烦,细节太难处理了,细节处理我...
2019-12-10 16:51:25
128
原创 FWT快速沃尔什变换-简解及证明
FWT简介FWT 用来求卷积,和FFT很像.三个公式Ck=∑i∣j=kAi∗BjC_k=\sum_{i|j=k}A_i * B_j Ck=i∣j=k∑Ai∗BjCk=∑i&j=kAi∗BjC_k=\sum_{i\&j=k}A_i * B_jCk=i&j=k∑Ai∗BjCk=∑i xor j=kAi∗Bj...
2019-09-10 19:56:36
402
转载 树链剖分原理和实现
树链剖分原理和实现树链剖分就是将树分割成多条链,然后利用数据结构(线段树、树状数组等)来维护这些链。首先就是一些必须知道的概念:重结点:子树结点数目最多的结点;轻节点:父亲节点中除了重结点以外的结点;重边:父亲结点和重结点连成的边;轻边:父亲节点和轻节点连成的边;重链:由多条重边连接而成的路径;轻链:由多条轻边连接而成的路径;树链剖分比如上面这幅图中,用黑线连接的结点都是...
2019-08-24 11:36:36
195
原创 斜率优化DP
什么是斜率优化DP?顾名思义,用斜率优化的DP。推荐一波博客这个大哥将的不错。斜率优化DP,一开始会化成一个式子,像f(j)−f(k)g(j)−g(k)<s(i) \frac{f(j)-f(k)}{g(j)-g(k)}<s(i)g(j)−g(k)f(j)−f(k)<s(i)满足这个式子可以得到jjj转移比xxx转移要优,其中不出意外,s(i)s(...
2019-08-23 20:16:35
447
原创 2019牛客暑期多校训练营(第十场) J Wood Processing
题意: nnn快木板,合成kkk块木板。相同高度可以合并,不同高度,需要把高的木板砍成和低的木板一样高。问合成kkk块最少浪费多大木板面积。题解: dp[i][j] 表示前j个合成i个木板最小花费面积。转移方程为dp[i][j]=min(dp[i−1][k]+sum[j]−sum[k]+h[k+1]∗(w[j]−w[k]),dp[i][j])dp[i][j]=min(dp[i-1][k]+s...
2019-08-23 20:06:18
292
原创 出神入化的分块 Educational Codeforces Round 71 (Rated for Div. 2) E Remainder Problem
Educational Codeforces Round 71 (Rated for Div. 2) E Remainder Problem题意: 两种操作,一种ax+ya_x+yax+y,第二种查询∑i=y5e5ai,(i%x==y)\sum_{i=y}^{5e5}a_i,(i\%x==y)i=y∑5e5ai,(i%x==y)所有模xxx等于yyy位置的和.题解: %x=y\%x=...
2019-08-23 10:06:16
862
原创 2019 Multi-University Training Contest 10 1011 Make Rounddog Happy
HDU 6701 Make Rounddog Happy题意 : 给你nnn个数,和kkk,找到区间[l,r] max(al,…,ar)−(r−l+1)<=kmax(a_l,\dots,a_r)-(r-l+1)<=kmax(al,…,ar)−(r−l+1)<=k 的数量(区间内不能出现有相同数字)。题解: 相当于找区间长度大于区间最大值-k 的区间数量,第...
2019-08-22 15:40:28
209
原创 分治算法
分治算法,顾名思义,分而治之。分治算法,每次将区间减半,化为[l,mid],[mid+1,r]区间,再用解决的两个区间来跟新[l,r],非常典型的例子就是归并排序。归并排序,每次对[l,mid],[mid+1,r]处理,然后O(n)O(n)O(n)合并两个数组,层数O(logn)O(logn)O(logn),每层合并O(n)O(n)O(n)复杂度稳定O(nlog(n))O(nlog(n))O(...
2019-08-22 15:06:23
204
原创 2019 Multi-University Training Contest 9 1007 Rikka with Travels
HDU 6686 Rikka with Travels题意: 在一颗树上选择两条不相交的路径的可能性有多少,路径长度定义为路径的顶点数。题解:初步思考,观察样例可以发现,求的是两条路径的有序对,[2,1],[1,2]不是同一种。我们假设已经知道你选择的一条路径长度为l,只需要找到把这条路径在树中移除,余下的森林的最长路径是多少,假设是rrr,对于长度为lll的路径有多条,然后分别求出对应的r...
2019-08-19 21:39:41
340
原创 2019牛客暑期多校训练营(第八场)Just Jump
题意: 终点位置为LLL,中间点是1,2,⋯ ,L−11,2,\cdots,L-11,2,⋯,L−1 ,开始位置在000,每次必须走至少ddd步,在第tit_iti步不能出现在pip_ipi这个位置,问从000到LLL,有多少种走法。**题解:**解法挺简单的,先算出没有mmm个约束的情况下,求一个值,这个f[i]=∑j=0i−df[i]f[i] =\sum_{j...
2019-08-14 22:03:24
165
原创 2019牛客暑期多校训练营(第八场) Distance
2019牛客暑期多校训练营(第八场) Distance题意: 给你一个 n∗m∗hn* m * hn∗m∗h 的空间,每次插入一个点,或者询问空间中点到这一点的最小曼哈顿距离。题解:1.HASH+三维BIT三维BIT,对于这种写法,太巨了,n∗m∗h<1e5n * m * h < 1e5n∗m∗h<1e5 特么直接用三维BIT 存一下就可以了,枚举八个方向...
2019-08-13 21:49:49
171
原创 2019牛客暑期多校训练营(第八场)Flower Dance
2019牛客暑期多校训练营(第八场)Flower Dance** 题意: ** 给nnn个点 mmm条边,每条边有一个权值区间,表示能通过这个区间的 值的范围,问从111到nnn可以通过的权值有多少个。** 题解: **1.DFS线段树+离散化+并查集这个线段树,其实也不能算是个正常的线段树,他build 的之后就没啥用了,没有更新和查询.。。直接在线段树上dfs,首先把权值离散化,然后存...
2019-08-13 21:47:42
177
原创 2019牛客暑期多校训练营(第七场) E Find the median
2019牛客暑期多校训练营(第七场)Find the median题意: 先把输入处理一下,没啥问题吧。处理完后应该相当于每次在一个集合里面加入l,r之间所有的数,问中位数是多少。题解: 这题很有意思,离散化+线段树 就能做,就相当于在线段树上求第sum/2个数在哪。比较朴素的就是先把所有的l,r保存下来,然后把他离散化,然后对离散化后的值做插入删除操作,我根据线段树动态开点的操作,写了个在...
2019-08-09 19:59:00
330
原创 2019 Multi-University Training Contest 5 1002 three arrays
HDU 6625 three arrays题意: 给两个数组,求两个数组两两异或后最小字典序。题解: 求字典序最小,也就是求值最小,如果是求一个数和另一个数组里面的一个值异或最小,很显然就是字典树,就是在字典树上优先取同位相同,没有再取同位相反。求两个数组异或之后字典序最小,其实也可以按照同样的方法求解。对两个数组分别做成一颗字典树,求两颗线段树异或之后字典序最小,就是两颗树异或值尽可能小。一...
2019-08-09 19:44:21
269
原创 回文树
个人博客这个东西学会了AC自动机 理解这个应该不难,AC自动fail指针保存了一个最长匹配后缀,这个也差不多。这个保存了最长匹配后缀回文串。举个例子老子找了半天没找到原本看过的博客,只找到了这张图片。随便写几句混一混就过去了。[外链图片转存失败(img-nQdd5HZI-1565181289944)(https://i.loli.net/2019/08/07/CVL9sbFBohiyI6p...
2019-08-07 20:36:09
153
原创 AC自动机
AC自动机用途给多个字符串t,再询问一个字符串s,问有多少个字符串t出现在询问的字符串s中。前置技能学AC自动机之前,先学会什么是字典树,什么是kmp。kmp我写过一篇博客,就不讲了,就是next 数组保存一个最长匹配前缀。字典树就更简单了,每个节点从根节点开始,出现一个字符就在父亲节点上连上下一个节点,也不多说。有需要再写一篇博客。AC自动机对于这个玩意,都说是字典树上跑KMP,到也没...
2019-08-07 11:05:10
203
原创 deepin 重启关机待机注销出现kernel:NMI watchdog: BUG: soft lockup - CPU#0 stuck for 26s
一开始搜deepin 的解决方案,找了半天没找到,结果找Ubuntu 找到了,deepin 和Ubuntu 同源,解决方法是一样的进入选择安装deepin 的时候 (还没有进入安装页面的时候,有3个选项给你的时候,第一个是install deepin,第三个是check ISO md5 ,第二个忘记了) , 按住ctrl + x,会出现一个界面,然后在文本中找到 quiet splash -...
2019-08-05 11:42:34
3033
原创 Linux 可以打开WIFI 但是看不到无线网络
编辑 /etc/rc.local添加文本#!/bin/sh -e## rc.local## This script is executed at the end of each multiuser runlevel.# Make sure that the script will "exit 0" on success or any other# value on error.#...
2019-08-04 21:09:45
2103
原创 2019 Multi-University Training Contest 4-1003
HDU 6616 Divide the Stones题意: 给一个n和一个k,将重量为[1,n]的石子分成k堆,每堆重量一样。题解: 先将石子分成n/k份,比如15 3,分成1 2 34 5 67 8 910 11 1213 14 15不难看出如果刚好偶数分,每两份组成一个,分配一定是刚好分配合理的,比如上述例子没有13 14 15,肯定是前两组分成 1 6,2 5 3 4 后两组...
2019-07-31 19:45:12
250
原创 后缀数组和高度数组(LCP)学习笔记(有坑)
后缀数组字符串后缀,指从字符串某个位置开始到字符串末尾的字串,原串和空串也是后缀。反之前缀。用sa保存字符串开始的下标。字符串总共有n+1个,字符串比较大小是O(n)O(n)O(n)的,所以直接用sort直接排序是O(n2log(n))O(n^2log(n))O(n2log(n)),很显然不合理。优化一 hash优化把字符串hash处理,修改sort排序方式,比较两个字符串,先二分最长前...
2019-07-30 22:20:14
793
2
原创 2019 Multi-University Training Contest 1 1001 Blank
HDU 6578 Blank题意: 给定1,N 的位置,每个位置可以填1,2,3,4其中一个,给m个区间[l,r] x ,限制[l,r]区间内只有x种不同的数。题解: n非常小,只有100,可以直接用数组枚举上一个数出现的位置,每个位置暴力填就行了。直接O(n4)O(n^4)O(n4)会T,。,必须要削常数。可以发现出现是什么数本身不重要,只和位置有关。然后最大的那个位置,一定是你要填的这个p...
2019-07-27 20:28:15
142
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人