By LTL

经过对BDG长期的观察得出的这套理论,希望能对大家学习OI有所帮助。

入门篇

首先在掌握一门语言时(P,C都无所谓的),假设不习惯指针能够直接无视。语言之中对于入门选手来说最重要的递归。学好递归才是后面全部的基础。对于学不好递归的同学建议去学一学数列,然后你就能明确了。

总结出来的写法是(如求a^k):

int solve(int k)

  {

   If (k==0) return 1;//先处理边界

   Int ans=slove(k/2);//化为子问题

   //知道子问题的解以后整合原问题

ans=ans*ans;

   If (k%2==1) ans=ans*a;

   Return ans;

  }

学好了语言之后就是准备NOIP。要拿一等奖事实上仅仅须要学好搜索,贪心,动规即可了(其它知识听老师讲就好,不须要加练)。先来说一说搜索吧。学好递归的话爆搜就非常好实现了。个人觉得老师教给你们的模板应该改一下。应该是这样

Search()

{

假设是终点就停止。

枚举决策

}

终止条件放外面有助于理解子问题、、

学主要的DFS就写简单版数独吧。学好基本DFS然后一般DFS考题主要分为2种:剪枝要求高。推荐3道题(黑书上的小木棍,前3短路,埃及分数),这3个做了差点儿相同就会主要的剪枝了;编程难度大。各种玩游戏的题,这个就须要多练习代码能力,推荐(NOIP2011mayan)。至于BFS难度在于判重上,经常使用的判重的方法:hash,trie树,阶乘编码,*平衡树。最后就是对BFS和DFS的选择。这个自己体会吧~~~什么A*,IDA*,Dancing Links,事实上对于拿一等奖没什么帮助。

不要小看搜索的威力,暴力出奇迹。当你做不到题的时候,奇葩搜索会得打出题人脸的。蒟蒻的笔者在NOIP2012DAY2T3就依靠搜索拿了40分(SX不会正解,你去惹啊)。大家还能够參考丽姐在CTSC2013上10分钟搜索怒A题的经历。

然后是DP,DP入门难,入了门以后NOIP的DP就基本能应付了。可是DP博大精深,至今笔者都没有玩转高难度DP。DP入门能够參看黑书。刘汝佳大神讲得非常清楚了(反正我认为是我看过的讲得最好的)。然后就刷题吧,把NOIP动规和题库前2页题梳理刷完,应该能入门了。

至于DP优化反正就2种优化状态和优化转移。状态优化无非就是去掉冗余或者转化描写叙述方式。

优化转移无非就是继承,剪枝。数据结构优化。总而言之。对于动规要多刷题。

最后贪心了,贪心出题人想怎么考就怎么考,广泛难度大,所以要先掌握主要的贪心套路(怎么掌握?喊学长推荐经典题目吧,有非常多东西都是模板)。然后是独立思考能力。一定要充分思考才看题解。由于贪心须要思维发散,要多想才干有提高。

至于其它东西也要学好,跟着老师的步调走,可是这3样假设不行的话请在别人耍游戏的时候刷题!假设学得差点儿相同了。那么结合一点点RP就能拿到一等奖了。并且非常轻松。

这个阶段建议多读一读导刊和做题库前7页的题。当然假设NOIP要考500+或者满分,这点水平是远远不够看得。

进阶篇

假设经历了上一阶段,说明你已经不只满足于NOIP拿一等奖了。你还须要NOIP考400+。500+为省队做准备了。

那么你须要的是配合大白书(计算几何以及难一点的数学能够无视)+较简单的省选题(题库上AC人数较多的)+COCI的简单题,没什么好说的,这个阶段你须要大量刷题,然后独立看论文和题解,要熟练掌握NOIP经常使用的算法而且要自学超纲的算法而且要開始改善你写代码的速度以及多看别人的代码来使自己代码更简洁高效。当你在寻常模拟考试都能考出200+的成绩,说明你就差点儿相同了。

假设你NOIP考得非常好,留下来冲省队。

那么恭喜你即将成为一位码农了- -,開始壮烈的人生。

省队内容比NOIP多了非常多倍,才開始冲省队建议配合大白书,黑书然后刷COCI以及CF的C,D题。

个人超级推崇COCI和CF的题,由于质量高,不繁琐,思维适中。

关键是题解写得好。非常多标程代码写得特别美丽!这个阶段就不能回避计算几何和数学了,多抽一抽出时间余时间把数学和几何知识自学了(假设想进A队的话。

A队和B队的AU线但是有差距的)。

假设学完了大白书和黑书。那么基本算法你都会了。这个时候你就须要怒刷BZOJ,由于COCI的题美中不住就是编程难度低。主要考思维基本用不上高难得算法。BZOJ汇集了各省省选以及各大比赛的题目。值得一刷。当然所谓的刷并不要求每道题都写代码。有些看懂题解就能够过了,这个须要酌情考虑,当然也要放弃一些太难得题(纯属浪费时间)。

假设你没失误进队,那么恭喜恭喜了。假设你题都刷得够多了,就要尝试总结一下自己刷的题和会的算法。这个阶段建议多总结,能够看国家集训队论文查漏补缺,要多考试,锻炼应试技巧。还是推荐CF。多打打比赛,了解最新的出题方向了。

然后你没失误就AU了,ORZ,肯定不止是RANK37!!

超神篇

当你不止是RANK37的时候这篇文章已经不能帮你了。

由于你已经有了自己的思考模式和学OI的习惯。后面的路仅仅能考你自己摸索了。加油NSOI第一块国际金奖的就是你罗!

版权声明:本文博客原创文章。博客,未经同意,不得转载。

更多RANK37的更多相关文章

  1. 模仿淘宝首页写的高仿页面,脚本全用的原生JS,菜鸟一枚高手看了勿喷哈

    自己仿照淘宝首页写的页面,仿真度自己感觉可以.JS脚本全是用原生JavaScript写得,没用框架.高手看了勿喷,请多多指正哈!先上网页截图看看效果,然后上源码: 上源码,先JavaScript : ...

  2. listview下拉刷新和上拉加载更多的多种实现方案

    listview经常结合下来刷新和上拉加载更多使用,本文总结了三种常用到的方案分别作出说明. 方案一:添加头布局和脚布局        android系统为listview提供了addfootview ...

  3. 分页插件思想:pc加载更多功能和移动端下拉刷新加载数据

    感觉一个人玩lol也没意思了,玩会手机,看到这个下拉刷新功能就写了这个demo! 这个demo写的比较随意,咱不能当做插件使用,基本思想是没问题的,要用就自己封装吧! 直接上代码分析下吧! 布局: & ...

  4. jquery 点击查看更多箭头变化,文字变化,超出带滚动条。

    从网上好了好久,没找到自己要的,自己写了一下. <!DOCTYPE html> <html> <head> <meta charset="utf-8 ...

  5. 为什么现在更多需要用的是 GPU 而不是 CPU,比如挖矿甚至破解密码?

    作者:Cascade链接:https://www.zhihu.com/question/21231074/answer/20701124来源:知乎著作权归作者所有,转载请联系作者获得授权. 想要理解G ...

  6. 如何在一台服务器上安装两个mysql或者更多

    如何在一台服务器上安装两个mysql 1       前言 上篇写了在一台机器上源码编译安装一个mysql,那么如何在一台机器上源码编译安装两个mysql或者更多呢? 2       环境 mysql ...

  7. 移动端下拉刷新、加载更多插件dropload.js(基于jQuery/Zepto)[转]

    使用方法 引用css和js <link rel="stylesheet" href="../dist/dropload.min.css"> < ...

  8. Delphi中ExtractFilePath、ParamStr以及更多文件/目录操作涉及的函数。附加对应的例子

    先介绍ExtractFilePath和ParamStr ParamStr 该函数的原型是:function paramstr(i: Integer): String; 对于任何的application ...

  9. 原生js移动端touch事件实现上拉加载更多

    大家都知道jQuery里没有touch事件,所以在移动端使用原生js实现上拉加载效果还是很不错的,闲话不多说,代码如下: //获取要操作的元素 var objSection = document.ge ...

随机推荐

  1. SecureCRT 6.7.1 注冊机 和谐 破解 补丁 方法

    之前一直在用SecureCRT 6.5.3 版本号,和谐补丁也好找,甚至中文版本号也可找到(眼下仅仅找到了SecureCRT.6.2.0) 可是换为 6.7.1 后就怎么也注冊不了了.. 没办法试了各 ...

  2. Ubuntu12.04编译Android4.0.1源码全过程-----附wubi安装ubuntu编译android源码硬盘空间不够的问题解决

    昨晚在编译源码,make一段时间之后报错如下: # A fatal error has been detected by the Java Runtime Environment: # # SIGSE ...

  3. Visual Studio Tips: How to change project namespace

    /* Author: Jiangong SUN */ If you want to modify a project's namespace and its physical container na ...

  4. 《Linux内核设计与实现》的地址空间读书笔记的过程

    1.核心区域进程包括各种内存对象 种内存对象,比方: 1.可运行文件代码能够包括各种内存映射,称为代码段(text section). 2.可运行文件的已初始化全局变量的内存映射,称为数据段(data ...

  5. Sqlserver中Over函数

    Over函数不能单独使用,要和分析函数:rank(),dense_rank(),row_number()等一起使用.  其参数:over(partition by columnname1 order ...

  6. T-SQL基础(5) - 表表达式

    1.派生表(derived table)select YEAR(orderdate) as orderyear, COUNT(distinct custid) as numcustsfrom Sale ...

  7. 【设计模式】Template Method模式

    OO基金会 封装 多态 继承 OO原则 封装变化 多用组合,少用继承 针对接口编程.不针对实现编程 为交互对象的松耦合设计而努力 类应该对扩展开放,对改动关闭 依赖抽象,不要依赖详细类 仅仅和朋友交谈 ...

  8. Codeforces 484E Sign on Fence(是持久的段树+二分法)

    题目链接:Codeforces 484E Sign on Fence 题目大意:给定给一个序列,每一个位置有一个值,表示高度,如今有若干查询,每次查询l,r,w,表示在区间l,r中, 连续最长长度大于 ...

  9. 编译hibernate源代码

    1)安装gradle,gradle是一个类似maven的构建工具 2)安装gitclient. 从网址 https://github.com/hibernate/hibernate-orm 上clon ...

  10. Android Application Thread CPU GC Operatiing and OOM Question 0603-随手笔记

    面前app当完成测试,没问题,以完成整个老龄化阶段包含数据收发器,关键在 adb shell top -m 5  我发现我的 app pid 占用  CPU是最多的,事实上我想说写一个app是不难,你 ...