怎么参加noi和noip,应该学什么
先学基本语法(建议不要学Pascal不然很吃亏)。
您如果会基本C/C++语法和基本计算机常识,并且有基本的数论功底,初赛应该稳过。(再看看逻辑运算什么就行了,基本不难)
noip普及组不用太多算法,模拟搜索熟练掌握并且会点小优化即可轻松省一(除非碰到特别毒瘤的题——但pj好像没有)。。。
NOIp普及,提高最好要会以下算法:(无顺序)
贪心
二分,三分查找
DFS,BFS(并且熟悉他们的剪枝和优化)
排序:冒泡,选择,插入,归并,快排,堆排序,希尔排序
熟悉分治
前缀和
各种DP:各种背包问题,区间DP,状压DP,数位DP,树型DP,单调队列优化、斜率优化DP
基本数论:gcd,exgcd,质数筛,快速幂,同余,矩阵乘法,组合数学,博弈论
基本图论:Prim,Kruskal,Dijkstra,Floyd,SPFA,差分约束系统,强连通分量,欧拉回路,A*算法,LCA,匈牙利算法
网络流初步
(不那么普通的)数据结构:后缀数组,树状数组,线段树,树链剖分,平衡树Treap
基本字符串算法:哈希和哈希表,KMP,Trie,Manacher,*AC自动机
虽然看起来很多但其实还好,我是初中生,这些算法/数据结构 还是可以接受的。但要注意的是,不要只顾着学算法,要提高真正编程水平(到时候骗分也好骗,哈哈)!建议少刷裸的模板题和数据结构题。
但NOI算法您不仅要熟练掌握以上算法,并且还要熟悉分块、莫队、模拟退火等等。。。
你们学校没有计算机老师?问老师就是啦。
如果没有老师的话就去百度知道,百度贴吧看看呗,多看看你就知道怎么学了