【OI学习注意事项】
1. 必备知识
普及组必学
1、模拟算法(暴力枚举),按照题目的要求,题目怎么说就怎么做,保证时间和正确性即可。
2、搜索与回溯,主要的是\(DFS\)(深度优先搜索)和\(BFS\)(宽度优先搜索),基本没有直接的暴力搜索。一般是记忆化搜索加剪枝,普及组第三题难度。
3、简单操作:如筛法、前缀和、快速幂、高精度、辗转相除法等,掌握全面即可应对大部分处理数据上的问题。
4、队列(单调队列)、栈、堆、链表等基础数据结构。
5、简单二分和分治(快速排序,归并排序)。
6、贪心,要保证贪心的正确性,如果无法证明也可以用来骗分。
7、数学知识、公式计算,要点在于公式的化简与变形,经过反复操作后也许就能得出重要结论。
8、简单的动态规划,容易推出状态转移方程,要注意初值与计算边界条件。
9、字符串基本操作,插入、删除、查找等。
10、经典例题变形加深:八皇后、马的走法、背包问题等。
提高组必学
0、普及组的\(10\)条。
1、较难的动态规划,多维的状态,转移方式较多。
2、简单数论,如扩展\(GCD\),欧拉函数等。
3、进阶算法:倍增,并查集,差分约束、拓扑排序,排列组合数,逆元,哈希。
4、最短路问题,需要掌握弗洛伊德算法、\(SPFA\)算法、\(dijkstra\)算法,以及它们对应的优化,再根据题目实际要求进行变形,用同样模板达到各种不一样的效果。
5、最小生成树问题,主要的两种算法为\(Prims\)和\(Kruskal\),同样要加上对应的优化,再根据题目进行变形,以满足题目的实际要求。
6、二分图染色、二分图匹配,一般题目都隐藏得很深,需要找到题目的本质,才能发现正确的解法。
7、强连通分量\(Tarjan\),最近公共祖先\(LCA\)。
8、数据结构:线段树、字典树、主席树、树状数组等。
9、树的更多操作:树链剖分、树的直径、树的重心等。
10、字符串操作:\(KMP\)等。
更多拓展
****大部分是省赛内容,如果想NOIP\(CSP-J/S\)取得好成绩的话,挑一些简单的学习一下吧!****
搜索:
启发式搜索(\(A*\))
迭代加深(\(ID\))
\(IDA*\)
随机化搜索
图论:
网络流
仙人掌算法
树:
平衡树
树套树
圆方树
线段树合并
数学:
容斥原理
莫比乌斯反演
中国剩余定理
欧拉定理
矩阵乘法
\(FFT\)
博弈论相关
计算几何
字符串:
字符串哈希
\(AC\)自动机
后缀数组
后缀自动机
回文自动机
\(manacher\)
共计25大类
高二学长的学习建议
1、尽快学习数学和\(DP\)
2、要重视网课的题目,找大佬题单
3、不会的题针对数据范围尝试打部分分,不要硬肝正解
4、不要开车,开车劝退
5、\(t1\)简单不要放过
6、先盲猜算法,尝试硬套
7、洛谷刷题不要点开标签
8、可以去无难度标签等的\(OJ\)刷题
9、多翻翻大佬博客
10、学习新算法要深一些,不要太快,适当放下脚步
11、高级数据结构不着急
12、考试完要做到考后\(300\),重视模拟题。对于好的题可以写博客记录
13、要自信
14、博客园的博客比较好
15、一些算法应用很多,如线段树,树状数组等。不能只停留在大板子的水平
16、如果想要进省队,可以多接触外面的人。不要飘,因为优势可能会消失。有了优势不要太高兴。
17、多练习
18、NOIp不会考高级算法,但省选会。刷题量,积累很重要。扩大见过题的概率。
19、可以多做一些思辩题,做自己能力范围内的题
20、训练自己不要犯诸如\(freopen\)未注释,空间开大的问题。
21、可以进行互测。
【OI学习注意事项】的更多相关文章
- OI学习之路上的宝藏网站/App分享
OI学习之路上的宝藏网站/App分享 想要变强吗少年?这里有各种我平时收集的网站/App,它们可以帮助你更好地学习算法或者找到解题思路.废话不多说,快来打开新世界的大门罢~ 知识学习 觉得各种知识晦涩 ...
- 关于学习oi的一些事项
我只是突然有感而发!(脑抽罢了 我其实是那种一直都没有计划说去学什么的人. 当然也不是那种点开洛谷一道题去写这道题不会就去学习相应的知识点的人. 随着洛谷 poj bzoj HDU CH Vojs 等 ...
- Linux学习笔记(2)Linux学习注意事项
1 学习Linux的注意事项 ① Linux严格区分大小写 ② Linux中所有内容均以文件形式保存,包括硬件,如硬件文件是/deb/sd[a-p] ③ Linux不靠扩展名区分文件类型,但有的文件是 ...
- 海亮OI学习游记
这只是一篇纯洁的游记,这里将要记录我在海亮十天集训的生活与被虐的历史QWQ...... Day1(2.10)刚来到海亮,嗯,这的环境真的不错. 来到机房,woc这机房的配置好高啊...这里都能打守望屁 ...
- vue 学习注意事项
一:插值方式: 1:数据绑定,最常见的形式就是使用 “Mustache” 语法(双大括号)的文本插值 <span>Message: {{ msg }}</span> 通过使用 ...
- 【清北学堂】广州OI学习游记
\(Day~0\) 早上\(9\)点多才爬起来,然后水了道题. 下午从[数据删除]出发,颠簸了将近\(5\)个小时终于抵达广州. 一出地铁站--卧槽这天,卧槽这风,要下雨的节奏? 没过两分钟倾盆大雨. ...
- Java学习注意事项
一个Java文件中可以包含多个类. 如果有public类,则文件名必须和public类一样. 例如: class Pie { void f(){ System.out.println("Pi ...
- 最近一段OI学习计划
1.在寒假的时间里尽量吧图论和DP的基础先学一下: 图论:数,二叉树,DFS.BFS遍历,然后最短路径(Floyd.dijkstra.SPFA),然后再最小生成树吧,如果还有时间的话(kruskal( ...
- Java学习: 面向对象的使用与注意事项
面向对象的使用与注意事项 面向过程:当需要实现一个功能的时候,每一个具体的步骤都需要亲力,详细处理每一个细节面向对象:当需要实现一个功能的时候,不关心具体的步骤,而是找一个已经具有该功能的人,来帮我做 ...
随机推荐
- 【VS开发】RIbbon编程
多彩界面,Ribbon编程 Ribbon是类似于office2007样式的界面,它替代了传统的MFC程序里的菜单和工具栏,MFC默认生成的Ribbon功能少,需要我们自己添加一些控件和图片等元素使界面 ...
- 【图像处理】FFmpeg解码H264及swscale缩放详解
http://blog.csdn.net/gubenpeiyuan/article/details/19548019 主题 FFmpeg 本文概要: 本文介绍著名开源音视频编解码库ffmpeg如何 ...
- 易混乱javascript知识点简要记录
一.== vs === ==在做判断时,如果对比双方的类型不一样的话,就会进行类型转换 假如我们需要对比 x 和 y 是否相同,就会进行如下判断流程: 首先会判断两者类型是否相同.相同的话就是比大小了 ...
- php+lottery.js制作九宫格抽奖实例
php+lottery.js制作九宫格抽奖实例,本抽奖功能效果表现好,定制方便简单,新手学习跟直接拿来用都非常不错,兼容IE.火狐.谷歌等浏览器. 引入抽奖插件lottery.js <scrip ...
- h5中的分组元素figure、figcaption、hgroup元素介绍
分组元素用于对页面中的内容进行分组. figure元素和figcaption元素 figure元素用于定义独立的流内容(图像.图表.照片.代码等),一般指一个独立的单元.figure元素的内容应该与主 ...
- Java 封装与类
一.面向对象编程 面向对象编程三大特性:封装.继承和多态. 类是实现封装的手段,是面向对象编程的基本单元. 封装隐藏了类的内部实现细节,暴露给外界可控的操作,提高数据的完整性和安全性,提高模块的可重用 ...
- 怎样在 Vue 的 component 组件中使用 props ?
1. 在注册一个组件时, 添加一个 props 属性, 将需要添加的 props 作为数组的元素进行添加, 比如下面的例子中, 我们添加了一个变量 name , 他就是一个 props, 我们可以通过 ...
- 怎样在 Vue 中使用 v-model 处理表单?
主要是通过 v-model 对表单元素做数据的 双向绑定. 用法其实也很简单, 只是因为表单元素有不同类型, 处理方式有些许不同, 这点需要注意. 1. 如果是 输入框 , 可以直接使用 v-mode ...
- Vue用递归实现一个消除输入框表情符的自定义directive
最近项目中有一个需求,所有的文本输入框需要过滤掉表情符号,但是觉得每次表单验证的时候去判断,有点麻烦.于是我想到了自定义一个指令,后续遇到需要删除表情符号的输入框,直接通过指令将表情符号删除就好了,方 ...
- 作业6:Java虚拟机类加载机制
一.概述 1.定义 虚拟机类加载机制:把类的数据从Class文件加载进内存,并对数据作校验.转换解析和初始化,最终形成可被JVM直接使用的Java类型. 2.与C/C++的不同 Java不在编译时进行 ...