NOI历年总结

[><]NOI历年总结

发现历年NOI的题目里面……DP好多啊……

NOI2007

  • 社交网络 图论,最短路,floyed。
  • 货币兑换 DP,斜率优化,分治或动态凸包 经典的动态凸包或分治斜率优化DP的问题。
  • 项链工厂 线段树 旋转和翻转实际上没有对序列做出改变,记录项链的起点和方向即可直接用线段树。
  • 生成树计数 DP,基于连通性状态压缩,矩阵乘法 新添加一个节点的时候,方案只和最后kk个点的连通性相关。状态压缩连通性(最小表示法),暴力处理转移,矩阵乘法优化。

NOI2008

  • 志愿者招募 线性规划,网络流 比较奇葩的建图(差分或线性规划花间式子),也可以用单纯型。
  • 糖果雨 树状数组 全部转换为时刻为00的状态,以起点、长度为横纵坐标建二维树状数组,用补集思想查询。
  • 道路设计 树形DP 令f[i][j][k]f[i][j][k]表示第ii个点得子树,最大的不便利度为jjlognlogn),和儿子的边里面有kk(2≤2)个火车道,方案数。
  • 假面舞会 并查集 如果原来不是一个集合直接合并并维护信息,是的话答案必为差值的约数。
  • 奥运物流 环套树DP 枚举环的长度,枚举本身的高度,直接DPO(n5)O(n5)

NOI2009

  • 变换序列 匈牙利算法 直接二分图匹配,倒着做,优先找字典序小得。
  • 诗人小G DP,决策单调性 如题……
  • 二叉查找树 区间DP 以数据值排序区间DP,离散化权值f[i][j][w]f[i][j][w]表示iijj构成的子树所有点权值大于ww的最小代价
  • 植物大战僵尸 拓扑排序,最大权闭合子图,网络流 经典建图,负权植物相当于“成本”,正权植物相当于“收益”,最大权闭合子图建图最小割即可。当然首先要拓扑排序,避免环的情况。正权和正权之间、正权和负权之间也是可以连边。
  • 管道取珠 DP 所谓平方可以理解成两个装置最后取得同样的序列的方案数。然后三维DP即可。

NOI2010

  • 能量采集 数论,反演,mu或phi函数 经典的反演问题,两种推法——一种用莫比乌斯反演,一种直接利用欧拉函数的性质。
  • 超级钢琴 主席树或RMQ,堆 问题相当于取前kk大,对于每一个点作结尾,主席树做法:维护这个点取到第几大,RMQ做法:每次用完后拆成两个区间扔回堆里。很经典。
  • 海拔 最小割 想想就会发现只可能是0011,然后0011交界处会有损失,不就是最小割么……
  • 航空管制 拓扑排序 正着做很蛋疼,我们倒过来做。因为正着是放晚了不行,而倒过来是放早了不行,所以不用担心往后脱。第二问就尽量先撑着不放目标点,实在不行了再放。

NOI2011

  • 兔农 矩阵乘法,斐波那契数列 用了一些斐波那契数列循环节的结论。找模kk意义下的循环节,然后矩阵乘法。
  • 智能车比赛 DP,几何 拐点只可能出现在两个矩形之间“通道”的拐点上,DP转移的时候维护一个可视弧度范围即可。
  • 阿狸的打字机 AC自动机Fail树,DFS序,树状数组 先建起Fail树处理出DFS序,然后按顺序枚举每个字符串X,处理“Y在X中出现了几次”的询问。在DFS序中标记X中的点,统计Y子树里面有几个标记的点。
  • 道路修建 DFS,手写栈 直接DFS一遍,卡递归……
  • NOI嘉年华 DP,单调性 首先处理前缀和后缀。f[i][j]f[i][j]表示到ii这个位置,其中一个场地有jj个嘉年华,另一个最多有多少。O(n3)O(n3)。第二问令g[i][j]g[i][j]表示iijj全选的最大答案。需要枚举左右两边f[i][j]f[i][j]里面的那个jj,然后发现随着左边jj的增大,右边jj的最优解单调不增。
  • 兔兔与蛋蛋 黑白染色,二分图 路径一定不重走某一点。必胜:该点在所有最大匹配中。不要每次都再做一遍匈牙利,直接增广即可。

NOI2012

  • 随机数生成器 矩阵乘法或BSGS RT……
  • 骑行川藏 拉格朗日乘数法,牛顿迭代 RT……
  • 魔幻棋盘 GCD相关知识,二维线段树(点修改,区间查询) 利用gcd(a,b)=gcd(b,ab)gcd(a,b)=gcd(b,a−b),将维护的数字从原数字变成了差。二维类似。这样区间修改只需要修改几个点。
  • 迷失游乐园 环套树期望DP 对每个点,处理向下的期望和向上的期望,环上暴力。
  • 美食街 费用流,动态开节点 对于每个厨师每个做菜的时间开一个节点,对每个菜开一个节点。因为点太多,所以对厨师做菜的时间的节点动态开。

NOI2013

  • 矩阵游戏 快速幂,等比数列或推式子 可以直接展开,发现可以变成等比数列求和。或者是像数学课学的求数列一样设个什么未知数……
  • 书法家 DP 按照三个字母的形态划分为多个阶段,每个阶段不同的转移。
  • 快餐店 树的直径,环套树,线段树 两种思路:第一种,显然环上有一条边一定不会走,枚举这条边,割掉,然后求直径,用线段树。第二种,枚举中心点在环的哪一段里面,然后转着维护答案。
  • 向量内积 矩阵乘法,点积,tricky 利用神奇的矩阵一题里面的做法,判断向量矩阵和它的转置矩阵乘起来是否和无解的答案矩阵一样。如果是模33就先平方(向量变成d2d2维)再做。
  • 树的计数 DFS和BFS序性质,线段树,期望 分为期望+1+1+0.5+0.5,清零三种情况。按照BFS(深度不减)顺序遍历。

NOI2014

  • 起床困难综合症 位运算性质 因为位运算每一位互不影响,我们当然要尽量让高位上答案为11,倒着推就行。
  • 魔法森林 LCT,排序 按照AA权值排序,一个一个加,动态维护关于BBMST
  • 动物园 KMP 维护KMP,同时维护答案,用类似KMP的方法。
  • 随机数生成器 贪心 显然每次能取小的就取小的。从小到大枚举,然后我们标记那些不能再取的点。因为每个点只会被标记一次,所以复杂度是对的。
  • 购票 点分治,CDQ分治,斜率优化 推式子发现是斜率优化,先点分治,然后用类似CDQ分治的方法做,排序询问,边更新凸包,边更新答案。

NOI2015

  • 程序自动分析 离散化+并查集
  • 软件包管理器 树链剖分
  • 寿司晚宴  状压DP 。
  • 荷马史诗 贪心  k叉哈夫曼树,堆优化
  • 品酒大会 后缀数组 并查集
  • 小园丁与老司机   Dp 有上下界的网络流



总结

  • 几何 1

  • DP 13 包括:

    • 斜率优化 2(都是分治)
    • 矩乘 1
    • 连通性状态压缩 2(一个是插头,另一个只是划分一下状态)
    • 树形 2
    • 环套树 2
    • 单调性 2
    • 区间 1
    • 期望 1
  • 期望 2

  • 数据结构 9 包括

    • 树状数组、线段树 5
    • LCT 1
    • 堆 1
    • 并查集 2
  • 环套树相关 3

  • 网络流 5 包括:

    • 线性规划(转成费用流) 1
    • 最小割 1
    • 最大权闭合子图 1
    • 费用流 1
    • 有上下界的网络流
  • 图论相关 4 包括:

    • 拓扑排序 2
    • 二分图 2
  • 数学相关 4 包括:

    • 数论 1(反演)
    • 数列相关2
    • 拉格朗日乘数 牛顿迭代 1
  • 矩乘 3

  • 字符串 2 包括:

    • AC自动机(Fail树) 1
    • KMP 1
  • 点分治 1

  • 位运算相关 1

  • 贪心 2

你可能感兴趣的:(noi)