摘要:
【全程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的用法 用迭代器 并查集 可以支持一些不相交集合的合并和查询 我们可以树形结构来组织数据 同一个集合的元素组成一棵树 因为集合没有交,所以最终构建得到的是一个 阅读全文