单调队列 也就是有一个数列a,要求你求数列b和c,b[i]是a[i]…a[i+w-1]中的最小值,c[i]是最大值。如果a是1,3,-1,-3,5,3,6,7,则b为-1,-3,-3,-3,3,3,c为3,3,5,5,6,7。 这个问题相当于一个数据流(数列a)在不断地到来,而数据是不断过期的,相当于我们只能保存有限的数据(sliding window中的数据,此题中就是窗口的宽度w),对于到来的查询(此题 2020-02-11 算法
前缀和 前缀和概念前缀和指的是用另一个数组b[n]来保存a[n]中前n项的和 例如,b[0]=a[0],b[1]=a[0]+a[1],… 应用求数组某一区间长度数字的和如果我给你一串长度为n的数列a1,a2,a3……an,再给出m个询问,每次询问给出L,R两个数,要求给出区间[L,R]里的数的和,一般可能是从L到R遍历一次,但这样很花时间,有了前缀和之后可以直接b[R]-b[L]就得到L到R的和 差分差分 2020-01-13 算法
初始化文件 有两个初始化文件,第一个文件是在启动时执行的,叫做登录文件(login file).第二个文件是在启动shell时执行的,叫做环境文件(environment file)。有的shell还有注销文件,注销文件指的是在shell关闭时执行的文件 bash shell中登录文件文件名(.Bash_profile .bash_login),环境文件(.bashrc),注销文件(.bash_logout) 2020-02-27 Linux
内中断 一般cpu都有一种能力,就是接受cpu内部或外部发来的信号,停止当前程序而取执行其他的程序。这种信息叫做中断信息,中断信息指的是cpu接受到这种信息后立刻处理这个信息。接受到这个信息后cpu会交给专门的程序去处理,叫做中断处理程序 内中断内中断指的是中断信息来自cpu内部。当cpu接受到相应几种情况时,会产生相应的中断信息 除法错误 例如 ,div除法溢出 单步执行 执行into指令 执行int 2020-02-01 汇编
从asm到exe 先要有masm.exe和link.exe,然后输入masm+程序名和link+程序名 或者masm+盘符+程序名,可以省略中间过程,节省时间例:masm c:\1.asm 2020-01-21 汇编
二叉树链表构建和应用 递归遍历中序123456789void inorder(binarytree *T){ if(T != NULL) { inorder(T->left); cout << T->data << endl; inorder(T->right); }}前序12 2020-03-29 数据结构
&&与||小提示 &&&&运算符从左自由依次判断 ,如果判断有一个为假则停止判断 ||同理如果判断有一个为真则停止判断 例#include<iostream> using namespace std; int main() { int a=0,b=1,c; c = (a != b) || (++a == b++); cout<< 2020-01-07
“凸包” 凸包就是把平面中所有点都包进去的凸多边形,当然多边形上的点也是题目中给出的点 分治法 1 首先,横坐标最小p1和最大pn的点一定是凸包上的点 2上包,即离p1pn最远的点,记pmax 3再把pmax与p1连接,求左侧的上包,重复上述过程即可求解 2019-12-31 算法
string大小写字母转换 在algorithm库中有transform函数transform(str.begin(),str.end(),str.begin(),::toupper)注意transform有四个输入参数1:str.begin()字符串的起始地址;2:str.end()字符串的终止地址;3:str.begin()是转换之后,输出到原str字符串的起始地址;4:转换操作,可以选择toupper,tolower。 2020-01-01 stl
vector vector的定义vector<数据类型> 标识符 vector的函数begin()返回开头元素的迭代器 end()同理 front() 返回开头元素的引用 back() 返回末尾元素的引用 size()返回vector内元素的数量 erase(迭代器) 删除一个元素 clear() 清空 insert(迭代器,a) 把a插入迭代器后 例vector中现在有1 2 3 三个元素,vec 2020-01-11