知识点总结
MrCabal
这个作者很懒,什么都没留下…
展开
-
关于lower_bound( )和upper_bound( )的总结
lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的。在从小到大的排序数组中,lower_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于等于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。upper_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于num的数字,找到返原创 2020-08-18 14:36:08 · 325 阅读 · 0 评论 -
线段树模板(区间求和+区间最大/小值+区间更新+单点更新)
#include<iostream>#include<string>#define LL long long #define MAX 200010using namespace std;int tree[MAX<<2]; // 线段树int lazy[MAX<<2]; // 延迟标记。都要4倍空间 //lazy数组设置的目的:如果我要求...原创 2019-11-04 21:04:50 · 313 阅读 · 0 评论 -
关于优先队列和sort排序的优先级设置的探讨
默认优先级在优先队列中默认——元素最大(字典序最大)的元素是top而sort排序不同,sort排序默认——元素最小(字典序最小)的元素在最前面修改优先级使用系统的比较函数修改优先级sort排序a[5]={1,2,3,4,5};sort(a,a+5,greater<int>() );//注意第三个参数后的括号//从大到小优先队列priority_queue<in...原创 2019-11-01 21:39:07 · 911 阅读 · 0 评论 -
字典树的理解(数组实现)
正规的字典树的数据结构,使用指针指向下一层子树。但是有写空间要求较高的题目使用指针的方法有可能会MLE。所以使用数组来实现字典树的数据结构是一种更好更紧凑的方法,这种方法更为保险以hdu 1251为例题目大意很多单词只由小写字母组成,不会有重复的单词出现,统计出以某一个字符串为前缀的单词数量。前半部分读入:dcbadebf对于这一部分的读入我们要做到的是建树和统计int trie[...原创 2019-10-26 17:12:19 · 1050 阅读 · 0 评论 -
二叉树的递归遍历
在二叉树的建立之后,最基础的应用就是遍历访问二叉树的各个节点遍历二叉树有四个遍历方式:前序遍历,中序遍历,后续遍历,层序遍历前序遍历先访问根节点再访问左子树再访问右子树中序遍历先访问左子树再访问根节点再访问右子树后序遍历先访问左子树再访问右子树再访问根节点这一张图是前三种遍历方式在二叉树中行走的路径,可以看到,这三种遍历方式经过的路径是相同的递归的代码比较简单但是递归的方法要注意二叉树...原创 2019-10-14 21:08:23 · 173 阅读 · 0 评论 -
快慢指针的应用和总结
在使用指针的传统链表中,有一个特殊的指针的使用技巧———快慢指针第一种使用情况:快速找到链表的中间节点正常情况下,第一反应我们可以先遍历一遍链表,得到节点的个数。再使用一个循环遍历到链表的中间,访问中间节点。使用快慢指针的方法就可以只遍历一遍的方法就可以找到中间节点。首先设置两个不同遍历速度的指针,快指针每次走2个节点,慢指针每次走1个节点。这样当快指针达到链表尾时,慢指针刚好到链表的中间...原创 2019-10-14 20:48:13 · 162 阅读 · 0 评论 -
单向链表的各种操作和注意事项
单向链表的各种操作和注意事项第一次试着写点东西,记录一下最近学习的知识点———————————————————————————————————————————链表的结构体typedef struct node{ int date; struct node* next;}Node; ———————————————————————————————————————————输出链表v...原创 2019-05-31 14:10:15 · 592 阅读 · 0 评论 -
大数(高精度)运算知识点
高精度可以直接使用java,java的相关基础知识还需要掌握如果使用c++就要用字符串形式读入,然后转化为数字数组模拟手算过程,一般0号元素记录数组的长度高精度的储存:注意是倒序存储void init(int a[]){ string s; cin>>s;//读入字符串s a[0]=s.length();//用a[0]计算字符串s的位数 for(i=1;i<=a[...原创 2019-09-02 14:20:35 · 222 阅读 · 0 评论 -
快速质因数分解
#include <bits/stdc++.h>int main(){ int n,i; scanf("%d",&n); for(i=2;i<=n;i++) while(n!=i){ if(n%i==0){ printf("%d ",i); n=n/i; } else break;...原创 2019-09-02 14:12:44 · 805 阅读 · 0 评论 -
java基础
一、命令行编译1、打开命令行Win + R打开运行窗口输入cmd按住shift键,右击鼠标,选择在此处打开命令窗口2、编译java文件,注意文件名与类名必须一致javac hello.java3、执行java文件java hello4、版本号查询java -version5、jdk安装目录查询java -verbose二、输入输出(utility)import java....原创 2019-09-02 14:12:00 · 101 阅读 · 0 评论 -
memset函数的注意点
memset函数不是直接把数组的每个元素出事化为某一个值而是按位赋值,所以只有有限的几个值是可以准确地赋值的memset(a,0,sizeof(a));memset(a,-1,sizeof(a));memset(a,127,sizeof(a));//无穷大memset(a,128,sizeof(a));//无穷小...原创 2019-08-27 15:21:22 · 183 阅读 · 0 评论 -
大数据cin超时的解决方案
当有大数据输入的时候cin和cout总是会浪费太多的时间,cin慢是有原因的,其实默认的时候,cin与stdin(scanf)总是保持同步的,也就是说这两种方法可以混用,而不必担心文件指针混乱,同时cout和stdout(printf)也一样,两者混用不会输出顺序错乱。正因为这个兼容性的特性,导致cin有许多额外的开销所以遇到大数据的时候有两种解决方案1。把所有的cin和cout都替换成sca...原创 2019-07-27 15:08:09 · 715 阅读 · 0 评论 -
位运算知识点总结
位运算知识点按位与(&)如果x的二进制的第 i 位是1,并且y的二进制第 i 位也是1,那么(x&y)的二进制的第 i 位=1列如0101 1010&1000 11000000 1000否则的话(x&y)的二进制的第 i 位=0按位或(|) 的逻辑和 按位与(&) 基本相同左移 <<x 中所有...原创 2019-07-26 17:03:31 · 189 阅读 · 0 评论