摘要:
emacs的使用方法 emacs配置: 将文件命名为.emacs,把配置敲进去,放在home文件夹 emacs命令行: alt+x打开命令行 编译: 在命令行输入compile,回车,会出现make -k,删掉它,输入g++ -o a a.cpp -g -Wall (-O2 -std=c++11), 阅读全文
摘要:
一:记忆工具 二:记忆构建 未完待续~~~ 阅读全文
摘要:
二分与三分 一:二分 在一个单调有限的区间上找一个值,每一次分左右两部分,判断是在左右哪两个区间,并及时调整上下界,直至找到了目标元素,就如他的名字一样,二分,不断把数据分成两半 但是对于解决实数类的问题,通常需要一个精确值,避免死循环 二:二分写法 1.整数定义域上的二分: 1 bool Chec 阅读全文
摘要:
NOIP应试技巧 1.考前准备:必备物品:身份证,水,卫生纸,表,眼镜可以适当带一点食物。 把总结浏览一遍,常用代码再看一遍,注意细节。 2.考试心态:不用想太多,做下去就行,你就是第一! 3.考试放松技巧:怒敲键盘、喝水、上厕所洗脸等。 4.到机房之后的准备工作: 5.做题技巧: A.看准考证上说 阅读全文
摘要:
数论 第一节:快速乘法 ll CF(ll a,ll b,ll p) { a%=p,b%=p; ll ans=0; do{ if(a&1) (ans+=b)%=p; (b*=2)%=p; }while(a>>=1); return ans; } 第二节:快速幂 int Pow(int a,int b) 阅读全文
摘要:
最短路 一、求出最短路径的长度 以下没有特别说明的话,dis[u][v]表示从u到v最短路径长度,w[u][v]表示连接u,v的边的长度。 1.Floyed-Warshall算法 O(N3) 简称Floyed(弗洛伊德)算法,是最简单的最短路径算法,可以计算图中任意两点间的最短路径。Floyed的时 阅读全文
摘要:
并差集 在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。这一类问题近几年来反复出现在信息学的国际国内竞赛题中,其特点是看似并不复杂,但数据量极大,若用正常的数据结构来描述的话,往往 阅读全文
摘要:
图的遍历 一、深度优先与广度优先遍历 从图中某一顶点出发系统地访问图中所有顶点,使每个顶点恰好被访问一次,这种运算操作被称为图的遍历。为了避免重复访问某个顶点,可以设一个标志数组visited[i],未访问时值为false,访问一次后就改为true。 图的遍历分为深度优先遍历和广度优先遍历两种方法, 阅读全文
摘要:
图 一、什么是图? 很简单,点用边连起来就叫做图,严格意义上讲,图是一种数据结构,定义为:graph=(V,E)。V是一个非空有限集合,代表顶点(结点),E代表边的集合。 二、图的一些定义和概念 (a)有向图:图的边有方向,只能按箭头方向从一点到另一点。(a)就是一个有向图。 (b)无向图:图的边没 阅读全文
摘要:
最小生成树 一、什么是图的最小生成树(MST)? 不知道大家还记不记得树的一个定理:N个点用N-1条边连接成一个连通块,形成的图形只可能是树,没有别的可能。 一个有N个点的图,边一定是大于等于N-1条的。图的最小生成树,就是在这些边中选择N-1条出来,连接所有的N个点。这N-1条边的边权之和是所有方 阅读全文
摘要:
树状数组 int lowbit(int x) { return x&(-x); } void update(int x,int y) 单点修改 { while(x<=n) c[x]+=y,x+=lowbit(x); } int sum(int x) 区间求和 { int res=0; while(x 阅读全文
摘要:
线段树 一、引入 在做题时经常会遇到需要我们维护一个序列的问题,例如给定一个整数序列,每次操作会修改序列某个位置上的数,或是询问你序列中某个区间内所有数的和。考虑到暴力算法,单点修改的复杂度为O(1),询问区间和的单次复杂度为O(区间长度),考虑到利用前缀和,询问单次为O(1),但单点修改为O(区间 阅读全文
摘要:
BT 二叉树基本概念 二叉树(binary tree,简写成BT)是一种特殊的树型结构,它的度数为2的树。即二叉树的每个结点最多有两个子结点。每个结点的子结点分别称为左孩子、右孩子,它的两棵子树分别称为左子树、右子树。二叉树有5中基本形态: 前面引入的树的术语也基本适用于二叉树,但二叉树与树也有很多 阅读全文
摘要:
Tree Node节点 root树根 degree度 leaf 树叶 level层次 depth深度 forest森林 BT二叉树 树是一种非线性的数据结构,用它能很好地描述有分支和层次特性的数据集合。树型结构在现实世界中广泛存在,如社会组织机构的组织关系图就可以用树型结构来表示。树在计算机领域中也 阅读全文
摘要:
队列 队列是限定在一端进行插入,另一端进行删除特殊线性表。就像排队买东西,排在前面的人买完东西后离开队伍(删除),而后来的人总是排在队伍未尾(插入)。通常把队列的删除和插入分别称为出队和入队。允许出队的一端称为队头,允许入队的一端称为队尾。所有需要进队的数据项,只能从队尾进入,队列中的数据项只能从队 阅读全文
摘要:
栈 栈是只能在某一端插入和删除的特殊线性表。用桶堆积物品,先堆进来的压在底下,随后一件一件往上堆。取走时,只能从上面一件一件取。堆和取都在顶部进行,底部一般是不动的。 栈就是一种类似桶堆积物品的数据结构,进行删除和插入的一端称栈顶,另一堆称栈底。插入一般称为进栈(PUSH),删除则称为退栈(POP) 阅读全文
摘要:
背包问题 一、01背包问题 【问题】: 有N件物品和一个容量为V的背包。第i件物品的费用(即体积,下同)是w[i],价值是c[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 基本思路: 这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。 用子问题定 阅读全文
摘要:
动态规划的基本模型 动态规划程序设计是对解最优化问题的一种途径、一种方法,而不是一种特殊算法。不像前面所述的那些搜索或数值计算那样,具有一个标准的数学表达式和明确清晰的解题方法。动态规划程序设计往往是针对一种最优化问题,由于各种问题的性质不同,确定最优解的条件也互不相同,因而动态规划的设计方法对不同 阅读全文
摘要:
广搜 第一节:广度优先搜索的过程 广度优先搜索算法(又称宽度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型。Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想。 广度优先算法的核心思想是:从初始节点开始,应用算符生成第一层节点,检查目 阅读全文
摘要:
贪心 一、基本概念 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。 贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备 阅读全文
摘要:
第七章 分治 所谓分治就是指的分而治之,即将较大规模的问题分解成几个较小规模的问题,通过对较小规模问题的求解达到对整个问题的求解。当我们将问题分解成两个较小问题求解时的分治方法称之为二分法。 你们玩过猜数字的游戏吗?你的朋友心里想一个1000以内的正整数,你可以给出一个数字x,你朋友只要回答“比x大 阅读全文
摘要:
深搜 搜索与回溯是计算机解题中常用的算法,很多问题无法根据某种确定的计算法则来求解,可以利用搜索与回溯的技术求解。回溯是搜索算法中的一种控制策略。它的基本思想是:为了求得问题的解,先选择某一种可能情况向前探索,在探索过程中,一旦发现原来的选择是错误的,就退回一步重新选择,继续向前探索,如此反复进行, 阅读全文
摘要:
递归 前面已经介绍了关于递归调用这样一种操作,而递归程序设计是C++语言程序设计中的一种重要的方法,它使许多复杂的问题变得简单,容易解决了。递归特点是:函数或过程调用它自己本身。其中直接调用自己称为直接递归,而将A调用B,B以调用A的递归叫做间接递归。 说到递归,可能我最先想到的就是Hanoi 【题 阅读全文
摘要:
递推法是一种重要的数学方法,在数学的各个领域中都有广泛的运用,也是计算机用于数值计算的一个重要算法。这种算法特点是:一个问题的求解需一系列的计算,在已知条件和所求问题之间总存在着某种相互联系的关系,在计算时,如果可以找到前后过程之间的数量关系(即递推式),那么,从问题出发逐步推到已知条件,此种方法叫 阅读全文
摘要:
信息获取后通常需要进行处理,处理后的信息其目的是便于人们的应用。信息处理方法有多种,通常有数据的排序,查找,插入,删除,归并等操作。读者已经接触了一些这方面的知识,本章重点介绍数据排序的几种方法。 1. 选择排序 基本思想:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在待排序的数列 阅读全文
摘要:
高精 高精度计算中需要处理好以下几个问题: (1)数据的接收方法和存贮方法 数据的接收和存贮:当输入的数很长时,可采用字符串方式输入,这样可输入数字很长的数,利用字符串函数和操作运算,将每一位数取出,存入数组中。另一种方法是直接用循环加数组方法输入数据。 void init(int a[]) //传 阅读全文
摘要:
#include<cstdio> #include<fstream> #include<iostream> #define FORa(i,s,e) for(i=s;i<=e;i++) 宏定义for+ #define FORs(i,s,e) for(i=s;i>=e;i--) 宏定义for- #def 阅读全文
摘要:
1.首先将BL.cpp编写,再将AC.cpp编写出来,前提条件为BL一定是对的 2.将BL与AC的重定向进行更改,将.in指向make.out,将.out更改为文件名+number.out,运行两个程序,产生exe,out 3.编写一个数据生成器.cpp,用时间做种子srand(time(0)),注 阅读全文
摘要:
emacs的基本配置 (set-background-color "darkslategray") (set-foreground-color "wheat") (global-set-key [f9] 'compile-file) (global-set-key (kbd "C-a") 'mark 阅读全文
摘要:
简单贪心,仓促成文,不当之处,尚祈方家和读者批评指正 阅读全文
摘要:
链接 阅读全文
摘要:
完整链接 20190214Test(栈与队列) 一:关系网络(relationship) 考分:100 终分:100 难度:普及+ 题干: 将临接矩阵转化为STL的list链式前向星储存,将list排序,直接BFS从起点走到终点,不断计数答案,一旦到达直接输出答案 应试: 直接BFS,省略~~~ 非 阅读全文
摘要:
#include #include #include #include #define FORa(i,s,e) for(int i=s;i=e;i--) #define gc getchar()//pa==pb&&(pb=(pa=buf)+fread(buf,1,10000,stdin),pa==pb)?EOF:*pa++ #define File(name) freopen(name".in"... 阅读全文
摘要:
#include #include #include #include #define FORa(i,s,e) for(int i=s;i=e;i--) #define File(name) freopen(name".in","r",stdin),freopen(name".out","w",stdout); using namespace std; static char buf[10... 阅读全文
摘要:
Priority_queue详解 1.基本函数 2.定义 基本函数: .push(x) .pop() .top() .size() .empty() 定义: priority_queue<Type, Container, Functional> Type 就是数据类型,Container 就是容器类 阅读全文
摘要:
List详解: 1.List赋值 2.基本成员函数 3.merge合并 4.remove删除 5.splice插入 6.unique去重 List赋值: 基本成员函数 : merge合并 : remove删除: splice插入: unique去重: 阅读全文
摘要:
NOIP2019计划 1.寒假集训前期夯实基础 2.寒假集训后期基础算法应用 3.寒假集训后期简单数据结构 4.节假日高级算法与高级数据结构 5.休息日零碎技巧与刷题竞赛活动 6.三大学习系统完善与加强 7.心态与技巧的阶段性上升 8.NOIP提高组全国赛区一等奖高分(Must do it) 阅读全文
摘要:
NOIP2018总结反思 1.基础不夯实,基本技巧系统不完善 2.基础算法运用不灵活,几乎只知道例题 3.简单数据结构不精巧周密,过于冗长浪费 4.算法分析不精准,时空复杂度的分析,健壮性的分析等等 5.高级算法与高级数据结构接触少之又少,自主学习进度慢而效率较低 6.预习,学习,复习三大学习系统的 阅读全文