OI暑假集训游记

莞中OI集训游记

Written BY Jum Leon.html

 

I算法

       又是一载夏,本蒟蒻以特长生考入莞中,怀着忐忑的心情到了8月,是集训之际。怀着对算法学习的向往心情被大佬暴虐的一丝恐惧来到了莞中。api

    这里真是个好地方啊,座居莞城中央,汇集四方灵气。伙食好,咱们学习天然好。(廖老师超级友好的数组

 

正文

II数据结构

感悟

      首先感受在莞中学习真的十分幸运,这里学习的环境、氛围都很好。咱们能够互相帮助,互相帮忙讲解不理解的题目,或是分享本身的方法。有廖老师带咱们飞(强,组织咱们讲解题目,重点难点廖老师会亲自给咱们讲解。我以为廖老师是一个颇有耐心,很好的老师,他不只仅帮咱们细致的讲课,在咱们作题时遭遇困难时会亲自帮忙讲解,审查代码,发现而且指出咱们具体的学习上的错误,十分有利于咱们对本身进一步的优化与学习。post

   在莞中天天早出晚归,以为莞中的早餐大包特别好吃;清晨校门假山前的莲花锦鲤好看;傍晚南区的天空云彩十分灿烂;三尺讲台上的廖老师十分友爱。学习

 

收获

收获如秋日果园中累累硕果般。有好几方面的。优化

   首先是学习上的。对于提升组的题目,题型有了一个更加彻底的了解。ui

巩固了许多基础的数据结构。栈,队列,堆,链式前向星等数据结构。还有提升组十经常使用而且高效的并查集,哈希表等。还学习了C++特有的STL:动态vector数组,优先队列,重定义运算符等。spa

除了数据结构,咱们主要学习的就是算法了,从新熟悉了深搜,广搜,在广搜专题中学习了特殊广搜题型的状态压缩,有关二进制的位运算,还有STL的queue应用,提升了咱们对算法的认知。

学习并巩固了许多学过和没有学过的图论算法,最基础的最小生成树开始,了解了Prim和Kruskal的算法工做原理,以及哪一个适用于稠密图,哪一个适用于稀疏图。

三种常见的最短路算法,Floyd,Dijkstra,SPFA。从单源点到多源点。在结合题目的练习中总结了最短路算法的应用,还有vector应用于邻接链表的结构,在某些题目中单向边和反向边的应用。 用SPFA处理图中负边权和环的状况。

学习了堆的原理,操做和维护一个堆的方法,以及在最小生成树Prim算法和单源最短路Dijkstra算法中如何用堆优化时间效率。学习了并查集的原理和并查集的优化方法,以及在最小生成树Kruskal算法中应用并查集优化时间效率。还有拓扑思想和拓扑中的关键路径。

动态规划方面一样收获颇丰。从大量的题目中了解到了基础的动态规划算法的变形,如背包问题的变形,最大连续子序列和,最长不降低序列,最长公共子序列的变形。以及区间动态规划的巩固掌握,附加值动态规划的预处理,还有树形动态规划的初步。

最后就是离散思想的空间优化和高效,还有初等数论的学习。

 

期许

这段时间是我学习OI的好机会,指望本身在高一的NOIP中拿到一等奖。对于集训期间本身的表现满意,天天认真的Coding,在不懂的地方找同窗老师讨论,理解透彻。对本身的期许就是在OI路上继续走下去,参加各大比赛,GDOI、GDKOI等,提升本身的思惟高度,学习更多的算法,不止步于联赛。对于本身的许多不足,数论方面的薄弱,以及许多更高级数据结构,Splay,平衡二叉树等还需继续加油学习。

 

III

算法总结

注:超连接为内网连接,大部分的题能够在JoyOI或者洛谷等其余的OnlineJudge上找到

Day1:线性表

       栈结构:先进后出。

       习题:GZOI 1097 括号匹配的检查(初等栈),GZOI 1098 表达式计算(个位数的运算式)(进阶)。

       高精度:原理特别简单,模拟手工运算。把模板背熟也很OK啊。

       习题:GZOI 1008 【高精度与数制转换】求X的p次方(不知道算不算高精度)。

       归并排序:拆分再拆分,最后组合。效率挺高

习题:GZOI 3427求逆序对

卡特兰数:递推实现,有可能会有高精度。第N个卡特兰数为

综合习题:GZOI 2273 number序列

 

Day2:深搜基础

       深搜知识点:状态的传递,DFS剪枝

       习题(较水):GZOI 3429 营救 ,GZOI 1214        排序集合

       习题(进阶):GZOI 1027 驾车旅游, GZOI 1208 关路灯

 

Day3:广搜基础

       广搜知识点:学会使用STL的queue

       难点:广搜结合状态压缩,位运算

       习题(较水):GZOI 1056 倒水,GZOI 1058 翻硬币

       习题(进阶):GZOI 1240 黑白棋游戏 (状态压缩&位运算),GZOI 2268 这不是错误,而是特色(搜的比较复杂)

 

Day4:哈希与广搜

       哈希知识点:%一个素数做为地址,将大化小,节省空间,查找效率高。

       哈希模板题: Hash(理论基础)

       值得一作的题:GZOI 2182师生树,GZOI 3730 马步问题,GZOI 3494树的最远距离

       毒瘤题:GZIO 1241 魔板

 

Day5:最小生成树

       最小生成树知识点:

  1. Prim算法:以一个点为中心,将所与之相连的边存入数组(可用堆或优先队列优化),再找出全部边中的最短边,扩张点,标记,在将与全部点相连未存入数组的边存入,重复扩张操做。
  2. Kruskal算法:将全部边按照边权为关键字排序,从小到大判断边的两段点是否连通。(可用并查集优化算法)

(掌握堆以及STL的优先队列的用法)

值得一刷的题:GZOI 3250 高速公路,GZOI 3723 Arctic Network,GZOI 3546 Truck History,GZOI 3547 Building Roads

 

Day6:堆与并查集基础

       堆知识点:堆排序:创建一个大根堆或者小根堆,将全部元素依次全部入队而且Shiftdown,输出时每次取堆顶元素,将堆底元素提到堆顶而且Shiftup。重复操做。

   并查集知识点:查找操做&优化:从当前节点出发到父亲节点,将当前节点的父亲赋值给通过的节点的父亲。合并:将A和B合并,只需将B的根节点赋值给A的根节点的父亲便可。(详见GZOI 1520)

   习题(堆):GZOI 1502 促销,GZOI 1503 序列和的前n小元素

   习题(并查集):GZOI 1520 家族(理论基础)(模板题),GZOI 1521 银河英雄传说(noi2002)(毒瘤题)。

 

Day7:最短路

       最短路基础算法dijkstra, floyd, bellman-ford, spfa.

   关于最短路的题,要水的就很水,要难的也很毒瘤,可是A了之后就会感受都是水题。

   模板题:GZOI 1043&1044 dijkstra& floyd

   水题:GZOI 1454 哈利波特与魔法石,GZOI 1903 灾后重建,GZOI 3257 母牛跨栏

   稍微不水的题:GZOI 2103 消息传递问题,GZOI 3630 Party,GZOI 3509 邀请卡片

   值得一作的题:GZOI 3507 虫洞(SPFA),GZOI 2202 佳佳的魔法药水,GZOI 2277 时间与空间之旅

 

Day8:拓扑排序与关键路径

   拓扑知识点:在一个图中将入度为0的点依次剔除,而且将与之相连的边删除。(模板在GZOI 2240)

   习题(普通拓扑):GZOI 2240 单挑排名(模板),GZOI 2281 烦人的幻灯片

   习题(关键路径):GZOI 3320 杂务,GZOI 2151 新校园

 

Day9:动态规划初步

   知识点:背包问题,求最大连续子序列和,求最长不降低序列,求最长公共子序列。

 

Day10:经典动规问题

   知识点:基础动态规划的变形以及理解

Day11:动规增强

   知识点:区间DP,树形DP初步。

   值得一作的题:GZOI 1084 糖果盒,GZOI 1088 邮局(IOI2000),GZOI 1089 多米诺骨牌(GDKOI2000),GZOI 1090 过桥问题(GDKOI2001),GZOI 1333 能量项链

   值得一作的树形DP:GZOI 2184 聚会的快乐

 

Day12:离散思想

   知识点:点坐标,位置的离散化。

   习题:GZOI 1562 矩形面积,GZOI 1561 幻灯片,GZOI 1563 Shaping Regions造成的区域,GZOI 1564 水塔水位

   不怎么毒瘤的毒瘤题:GZOI 1504 轮廓线(洛谷上的数据有误,个人代码GZOI上15ms)

 

Day13:初等数论(蒟蒻最怕

   初等数论基础知识,素数问题,容斥原理,勾股定理,同余定理,其它数论基础。

 

Day14:完结撒花!!!

 

转载于:https://www.cnblogs.com/SJum/p/9506398.html