摘要:
【全程NOIP计划】组合计数选讲 组合数基础 加法原理 加法原理,总共的等于各个相互独立的相加 乘法原理 两个不相干的事情同时发生,总共的情况是两种情况相乘 抽屉原理 容斥原理 排列数 从n个中选m个,考虑顺序 总的方案数为$P_nm=\frac {n!} {(n-m)!}$,或者可以记录为$A_n 阅读全文
摘要:
【全程NOIP计划】图论算法 最短路算法 常用的最短路算法SPFA,Dijkstra,Floyd算法 最短路问题,就是对于有权图的两个点,找到一条连接两个点的路径,使得路径的权值和最小 在说最短路算法之前,必须了解松弛的概念 其实n简单,如果$a \rightarrow b+b \rightarro 阅读全文
摘要:
【全程NOIP计划】数学推导选讲 常见不等式 柯西不等式 对于数列a和b,有以下恒成立 \[ \sum_{i=1}^na_i^2 \sum_{i=1}^n b_i^2 \ge (\sum_{i=1}^na_ib_i)^2 \] 令 \(A=\sum a_i^2,B=\sum a_ib_i,C=\su 阅读全文
摘要:
【全程NOIP计划】树上问题 最近公共祖先 问题 给定一棵树,每次给两个点,求他们的祖先,且该祖先为深度最小 思路 一般来说,我们想到一个暴力做法 查询x,y的话,直接把x的祖先全部标记一遍,然后把y向上遍历,直到遍历到一个点,使得这个点被标记过,这个点就是x和y的最近公共祖先 或者,使得深度更大的 阅读全文
摘要:
【全程NOIP计划】简单数论 基础知识与记号 \(\forall\),\(\exist\) 整除:如果$a=bk $,其中$a,b,k$都是整数,则$b$整除$a$,记作$b|a$ 也称作b是a的约数(因数),a是b的倍数 如何求出n的所有约数? 如果a是n的约数,则n/a也是n的约数,且a和n/a 阅读全文
摘要:
【全程NOIP计划】思维与构造题 什么是构造题? 不同于维护数据结构并回答询问的数据结构,寻找最大值和最小值的最值问题,计数问题,但构造体致力于让你给出一组方案,使得在一定的限制内满足某些条件,方案通常不唯一,构造方法也可以不唯一 比如: 1.给定一个排列,允许元素交换操作,输出一组操作使之排序 2 阅读全文
摘要:
【全程NOIP计划】分治与倍增 分治 分治就是分而治之,化整为零的思想 分治的原理是把困难的大问题化解为简单的小问题 然后先解决小问题,然后根据小问题的答案解决大问题 它本质上不是一个算法,而是一个思想 比如快速幂,倍增求lca,归并排序,线段是cdq分治,甚至后缀数组FFT都利用了分治思想 分治虽 阅读全文
摘要:
【全程NOIP计划】动态规划及优化1 LIS 非常经典,最长上升子序列 设计状态 以$f[x]$表示序列a中以$a_x$结尾的LIS长度 涉及转移 \(f[x]=max_{i<x,a_i\le a_x}(f[i]+1)\) DP的状态和转移 一个问题可以DP,是因为这个问题可以从小问题的解推出大问题 阅读全文
摘要:
【全程NOIP计划】初级数据结构2 树状数组 可以用于维护前缀信息(可合并) 优点:代码段,速度快 比如: 给定一个长n的数组,支持操作: 1.将第$i$个数$a_i$加$v$ 2.询问区间$[l,r]$中的数的和 \(lowbit(i)\):只保留$i$的二进制表示中最低位的1 树状数组中,节点$ 阅读全文
摘要:
【全程NOIP计划】初级数据结构1 在线:每次询问之后,立马可以得到查询结果 离线:知道所有需要查询的值,然后一次输出查询结果 STL中set的用法 用迭代器 并查集 可以支持一些不相交集合的合并和查询 我们可以树形结构来组织数据 同一个集合的元素组成一棵树 因为集合没有交,所以最终构建得到的是一个 阅读全文