省选计划

· · 个人记录

【准备1】数学与数论

刷题不局限于洛谷的,所以你可以去其它地方交洛谷没有的题目。

BZOJ题目提交网址:https://darkbzoj.tk/

HDU:http://acm.hdu.edu.cn/

POJ:http://poj.org/

UOJ:https://uoj.ac/

LOJ:https://loj.ac/

以下是 NOIP 选手可以提升的知识点和题单

一些需要了解的tricks:

位运算:

https://www.luogu.com.cn/blog/chengni5673/er-jin-zhi-yu-wei-yun-suan https://www.cnblogs.com/dudujerry/p/11275205.html

或者直接在 OI Wiki 中查看。位运算是状压 DP 等算法中中常用到的状态压缩技巧,需要熟练掌握,但部分位运算对代码时间优化微弱,不可剑走偏锋。

快速乘:https://www.cnblogs.com/812-xiao-wen/p/10543023.html

读入与输出优化:https://www.luogu.com.cn/blog/encore/io-you-hua-nei-suo-shi 如果读入量不高(1e6以内),不一定需要优化。

【准备2】图论

以下是 NOIP 选手可以提升的知识点和题单

图论的小技巧以及扩展https://www.luogu.com.cn/blog/chengni5673/tu-lun-di-xiao-ji-qiao-yi-ji-kuo-zhan

各种最短路算法的介绍和比较 https://www.luogu.com.cn/blog/FrozaFerrari/xue-tu-lun-ni-zhen-di-liao-xie-zui-duan-lu-ma-post

【准备4】动态规划

需要了解一些比较常见的动态规划的套路。当然已经假设您已经学会了普及组难度的动态规划和基本概念——背包问题、最长不降子序列、最长公共子序列等。下面的动规是 NOIP 中可能会考的类型。

【准备5】数据结构

  1. 一些基本的维护数据的 trick:
    • 前缀和:LuoguAT2412、P3406、P1115
    • 差分:P3128、P4515、P3066、HDU6514
    • 离散化:P1360、P2061
    • 单调栈:BZOJ1307、P3194
    • 单调队列:P1091、P2216、P2564
  2. 具体的数据结构算法(NOIP级别)
    • 栈&队列&堆:P2341、P3551、P2564、P3594、P1090
    • 并查集:P3068、P4147
    • 线段树&树状数组:P1972、P2023、P4560
    • 倍增、RMQ
    • P2341 [USACO03FALL][HAOI2006]受欢迎的牛 G
    • P3551 [POI2013]USU-Take-out
    • P2564 [SCOI2009]生日礼物
    • P3594 [POI2015]WIL-Wilcze doły
    • P1090 [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G
    • P3068 [USACO13JAN]Party Invitations S
    • P4147 玉蟾宫
    • P1972 [SDOI2009]HH的项链
    • P2023 [AHOI2009] 维护序列
    • P4560 [IOI2014]Wall 砖墙
    • AT2412 [JOI 2007 Final]最大の和
    • P3406 海底高铁
    • P1115 最大子段和
    • P3128 [USACO15DEC]Max Flow P
    • P4515 [COCI2009-2010#6] XOR
    • P3066 [USACO12DEC]Running Away From the Barn G
    • P1360 [USACO07MAR]Gold Balanced Lineup G
    • P2061 [USACO07OPEN]City Horizon S
    • P3194 [HNOI2008]水平可见直线
    • P1091 [NOIP2004 提高组] 合唱队形
    • P2216 [HAOI2007]理想的正方形

【准备6,重要】综合思维题目

这些题目的难度和范围大约等于 NOIP 较难的题目。如果能够可以完成的话最好,但是如果没有时间的话也可以嘴巴 AC。

有条件的话可以限时、随便抽选 3 题没有写过的题目,先不要看题解,当做 OI 赛制自行进行模拟测试。

【前期 1】数据结构 1

数据结构是处理数据的骨架。本周已经假设大家学习完了准备阶段 DS 的知识,直接从基础省选的内容开开始。

以下题解的板子各有特点,请选择一个符合自己习惯的板子并熟练掌握。

基础任务(尽可能全部掌握)

线段树入门:

P2023,P4513,P1471,P6327,P3792

题单(如果有多余的功夫可以嘴巴 AC,选择一些感兴趣的完成):

线段树进阶:

P5278,P6617,P5069,P5608,HDU6315,UOJ228,P3747

平衡树:

treap:

https://www.luogu.com.cn/blog/Chanis/fhq-treap

https://www.luogu.com.cn/blog/HOJQVFNA/qian-xi-treap-ping-heng-shu

https://www.luogu.com.cn/blog/85514/fhq-treap-xue-xi-bi-ji

替罪羊树:

https://www.luogu.com.cn/blog/Apocrypha/scapegoattree-yang-xie

https://www.luogu.com.cn/blog/hanzhongtlx-juruo/ti-zui-yang-shu-xue-xi-bi-ji

splay:

https://www.luogu.com.cn/blog/tiger0132/slay-notes

题目:

P2042,P5482,P4036,P3586,P6105,P5610,P5068,P5066

题单:

https://www.luogu.com.cn/training/3174

https://www.luogu.com.cn/training/5005

进阶任务(供学有余力的同学学习)

成都七中openjudge的数据结构部分

http://cdqz.openjudge.cn/ds/

“李超线段树”类问题:

https://www.luogu.com.cn/blog/infinity-dimension/Li-Chao-Tree

题目:P4097,P4069

题单:https://www.luogu.com.cn/training/3243

“楼房重建”类问题:

https://www.luogu.com.cn/blog/PinkRabbit/Segment-Tree-and-Prefix-Maximums 基本够用的方法

其余技巧

https://www.luogu.com.cn/blog/PinkRabbit/solution-cf1340f 题目 https://www.luogu.com.cn/problem/P6781 题目 https://www.cnblogs.com/jz-597/p/14070633.html 题目 https://peehs-moorhsum.blog.uoj.ac/blog/5486 C题

题目:P4198,CF1340F,P6781,UOJ515

所谓的“ODT”算法:

https://zhuanlan.zhihu.com/p/102786071

题目:https://www.luogu.com.cn/problem/CF896C

【前期 6】数据结构 2

可持久化线段树与可持久化trie:

https://www.luogu.com.cn/blog/your-alpha1022/WeightSegmentTree-ChairmanTree

https://www.luogu.com.cn/blog/sdlang/Trie-study-text

题目:

HDU4757,P3567,P2839,UOJ218,P3402,P3293,P4197,P4899,P3302

题单:

https://www.luogu.com.cn/training/2971 的第二个部分

https://www.luogu.com.cn/training/1176

可持久化可合并堆:

https://www.luogu.com.cn/blog/cytus/ke-bing-dui-zhi-zuo-pian-shu

可持久化平衡树:

https://blog.sengxian.com/algorithms/treap

题目:

HDU 6087,P5055,P5350,P5586

树套树:

https://www.luogu.com.cn/blog/qiuly/qian-tan-shu-tao-shu-xian-duan-shu-tao-ping-heng-shu-post

https://www.luogu.com.cn/blog/3383669u/zong-shu-tao-shu-qian-xi-chang-yong-jie-gou-di-te-xing

https://www.luogu.com.cn/blog/bfqaq/qian-tan-shu-zhuang-shuo-zu-quan-zhi-shu

题目:

P3380,P4396,P3810,P4054,P3759,P3157,P3332,P3242,P4690,P5445,P3688

题单:

https://www.luogu.com.cn/training/1176

【前期 2】数学 1

之前调查了一下,大家似乎多少有点数学基础,太基础的内容就不强调了吧……

本来想自己多写点东西,但这周被一串事情和ddl安排了……也许晚些时候可以和大家见面。不过,对任何地方有任何问题可以随时找我,我之后也可能会往里面补充点东西。

现在 luogu 的 markdown 似乎不支持 - [ ] 和 - [x] 之类的写法,- [x] 表示基础任务,- [ ] 表示目前阶段可选择性了解(题单中部分题也是选择性的(比如需要选学知识的题,推导太困难的题))。

呃……东西有点多的样子……听说有同学是打印的,大概可以先看看内容再选择地打印一些吧……(群里讨论吧

推荐阅读:

【前期 7】数学2与计算几何

还在做.jpg

数学部分剩下的东西很多很杂.jpg 所以下面写的很多东西都没什么关系。

需要优先掌握的(会作为别的东西的前置知识 or 经常考)会用 粗体 标注。

很难掌握,或者代码很复杂的会用 斜体 标注。

数学部分

【前期 3】字符串

本周需要大家掌握的知识点有:

  1. Trie 树(其实这个东西非常基础,大家应该都会吧)
  2. kmp(这个应当熟练掌握,今年 NOIP 都有考到)
  3. AC 自动机(这个东西就是 kmp 的进阶版,对于没有接触过自动机结构的同学来说这个可能是最容易理解的自动机之一了)
  4. 后缀数组(即 Suffix Array,简称 SA。这个东西是解决字符串问题的一大利器,其精华在于 height 数组。学好了可以用它做很多字符串题)
  5. 后缀自动机(即 Suffix Automaton,简称 SAM。这个东西相当强大,但是相对 SA 来说较难理解。然后由于 CYJian 是 SA 党而 SAM 学了之后不经常使用所以现在对其理解不是很深刻,所以有关 SAM 的 CYJian 无法解决的问题可以询问 CYJian 的同学 Kewth,当然如果后面 Kewth 负责的专题周有问题也可以来找 CYJian)
  6. Manacher(俗称马拉车。是一个求每个位置作为回文中心时最长回文半径的算法。这个东西可以配合使用回文串的各种优良性质来解决问题)
  7. 回文树(貌似也会被称作回文自动机。当你对自动机结构相当熟练之后,你会觉得这个东西如同 AC 自动机一样相当的简单。然而由于Manacher 能解决绝大多数的回文串问题,所以这个算法其实相对来说比较鸡肋。不过仍然存在回文树能做而 Manacher 不能做的题目)

如果以上知识点没有学过,可以到 OIwiki 上进行学习(如果会这个算法但几乎完全不了解一些实际使用的小 trick,也可以上 OIwiki 翻阅一下,了解一些实用小 trick)。我本人学习这些字符串算法的时候都是在 OIwiki 上学的,因此感觉只要好好阅读 OIwiki 上的内容就足够学懂了。当然下面也会推荐一些博客给大家,大家可以视自身情况选择性的阅读(持续更新):

yyb 的字符串合集

洛谷日报内容收集:

SA:初学资料

SAM:初学资料

Manacher:初学资料

PAM:初学资料

选读内容:

后缀树

SA_IS

Lyndon Word

Hash

一些补充:

  1. 字符串哈希能做的题,一般来说用其他的字符串算法应该也能处理,故此份题单不会专门涉及此方面算法。
  2. 如果觉得时间比较紧张,难以一下子全部掌握,那么我建议大家按照上面我写下来的顺序依次学习(如果觉得 SAM 太难也可以选择先学 Manacher 再啃 SAM)
  3. 题单里头除了模板题之外,都是可能存在多种解法的题。大家可以多多思考一下,试试能不能用其它算法解决。另外,这里头的题有的可能比较难,不一定要求能够全部都做出来。实在不会的题可以翻看题解学习其解题的思路,积累经验。
  4. 这里是我在 NOI 前写给自己看的字符串的简易复习小结,由于是给自己复习用,所以写的东西可能比较简略,可能没有那么规范,并且带有一定的主观看法。大家可以看情况阅读。其实我大部分字符串都是直接看 OIwiki 学的,所以这里头有些内容和 OIwiki 上的重合率比较高。其实在 OIwiki 上学应该就能学会了,缺的可能就只有做题的经验。所以如果在学习算法的时候有困惑可以先自己试着思考一下,实在不会就可以直接提问。
  5. 如果实在学不会 SAM 其实问题也不是很大,只要把 SA 钻研得够深,就能整出一些弱化的替代品出来。——SA 党忠实拥簇者。 最好还是要学会 SAM,不然做某些题的时候会比较吃力,比如 [NOI2018]你的名字。
  6. OIwiki 的字符串部分在下方都会有一些经典应用,大家可以先试着做做那些简单例题加深理解。
  7. 一点心得:字符串算法,其实学会 AC 自动机、SAM、Manacher 就基本能解决字符串相关题目了。如果实在不能熟练掌握 SAM,可以先试着上手 SA,这个还是比较容易熟练掌握的。但是字符串问题中许多困难的问题基本都是以 SAM 为基础进行考察的,所以对于怀有梦想,不仅仅局限于“只要进省队就好了”“只要蹭上 Au 分数线就好了”的同学们来说,熟练掌握这些东西仅仅只是基础。这一周我也没有安排更加深入的东西(比如 runs,比如 border 的各种理论),是因为考虑到大家平均水平可能不是很高,所以最好还是先学好基础的东西以确保能够有进入省队,甚至触及 Au 分数线的底子。
    • P3375 【模板】KMP字符串匹配
    • P5357 【模板】AC自动机(二次加强版)
    • P3809 【模板】后缀排序
    • P3804 【模板】后缀自动机 (SAM)
    • P3805 【模板】manacher算法
    • P5496 【模板】回文自动机(PAM)
    • CF471D MUH and Cube Walls
    • P2375 [NOI2014] 动物园
    • P4555 [国家集训队]最长双回文串
    • P1659 [国家集训队]拉拉队排练
    • P3426 [POI2005]SZA-Template
    • CF808G Anthem of Berland
    • P3121 [USACO15FEB]Censoring G
    • P2444 [POI2000]病毒
    • P2414 [NOI2011] 阿狸的打字机
    • P2336 [SCOI2012]喵星球上的点名
    • P2463 [SDOI2008]Sandy的卡片
    • P3181 [HAOI2016]找相同字符
    • P3346 [ZJOI2015]诸神眷顾的幻想乡
    • P4081 [USACO17DEC]Standing Out from the Herd P
    • P3649 [APIO2014]回文串
    • P3975 [TJOI2015]弦论
    • P6257 [ICPC2019 WF]First of Her Name
    • P7046 「MCOI-03」诗韵
    • P2178 [NOI2015] 品酒大会
    • P4156 [WC2016]论战捆竹竿
    • P6292 区间本质不同子串个数
    • P4022 [CTSC2012]熟悉的文章
    • P5287 [HNOI2019]JOJO
    • P5284 [十二省联考2019]字符串问题
    • P4384 [八省联考2018]制胡窜
    • P5115 Check,Check,Check one two!
    • CF587F Duff is Mad
    • P4770 [NOI2018] 你的名字
    • CF954I Yet Another String Matching Problem
    • CF1073G Yet Another LCP Problem
    • CF547E Mike and Friends
    • P4482 [BJWC2018]Border 的四种求法
    • P1117 [NOI2016] 优秀的拆分
    • CF932G Palindrome Partition

【前期 4】图论与网络流

这里默认大家有 NOIP 级别的图论基础(包括:DFS/BFS,最短路,拓扑排序,最小生成树等)。

下面收录了一部分(大部分,除了一些质量欠佳的)相关的洛谷日报,以及 OI-wiki 的相关内容。所有未标明来源的链接均为网络上选取的写的较好的博客。

红色星星 \color{red}{\star} 表示选学(学有余力的情况下可以去学)内容。

图论部分

做网络流题的时候需要注意不要把最小割和最大流搞混。

基础练习题见 网络流24题。本题单里收录了其中一部分。

日报#148 的后半部分(网络流部分)写的也非常好,建议阅读。

【前期 5】动态规划

tips: 这里动态规划囊括了一般的递推,而不局限于最优化。大多时候用不着区分它们。

动态规划算是个常考的点,希望大家能够熟练掌握动态规划的各种模型和优化方法。

我整理的题单主要目标是尽可能囊括更多的基本模型和方法,而设计 DP 的技巧有很多,需要大家自己多多在练习中积累。如需按知识点刷题可以参照 此处 。*标注 的是 20 道好欺负的题**

标注 (x) 的是不是特别重要的部分,时间不够可以暂时搁置。

【前期 6.5】树上问题

树上差分

题目:P3128,P2680,P4216

LCA,倍增

https://www.luogu.com.cn/blog/TheDawn/qian-xi-lca

题目:P3379,P1967,P5024

DFS序:

题目:Bzoj3306,P3979,P1600,P4219,loj6276

树链剖分:

https://www.luogu.com.cn/blog/communist/shu-lian-pou-fen-yang-xie

题目:P2590,P4211,CF757G,P3178,P4315,P2146

题单:https://www.luogu.com.cn/training/1654