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. Moran’s I空间统计中出现内存溢出的问题

    在经济学.资源管理.生物地理学.政治地理学和人口统计等领域,经常会有如下的研究需求: 研究区域中的富裕区和贫困区之间的最清晰边界在哪里? 研究区域中存在可以找到异常消费模式的位置吗? 研究区域中意想不 ...

  2. JavaScript实现的购物车效果-效果好友列表

    JavaScript实现的购物车效果.当然,可以在许多地方使用这种效果.朋友的.例如,在选择.人力资源模块,工资的计算,人才选拔等..下面来看一下班似有些车效果图: watermark/2/text/ ...

  3. JavaScript模式读书笔记 文章3章 文字和构造

    1.对象字面量     -1.Javascript中所创建的自己定义对象在任务时候都是可变的.能够从一个空对象開始,依据须要添加函数.对象字面量模式能够使我们在创建对象的时候向其加入函数.       ...

  4. 使用C#和.NET 4编写的并行应用程序“多核并发编程的规则”

    “多核并发编程的规则” 规则的描述如下 1.      并发编程的思想—这条规则就是要谨记并发编程思想进行设计,就像前边章节所提交的. 2.      面向抽象编程-你可以利用.NET4中的TPL提供 ...

  5. 开源Math.NET基础数学类库使用(16)C#计算矩阵秩

    原文:[原创]开源Math.NET基础数学类库使用(16)C#计算矩阵秩                本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4 ...

  6. linux下&quot;=&quot;号与&quot;==&quot;号

    <鸟哥的linux私房菜>基础学习篇P382中说,在bash中"="与"=="是同样的,都代表推断是否相等,仅仅只是因为其它语言一般写法使用&quo ...

  7. ASCII与Unicode编码消息写文件浅析

    [文章摘要] ASCII与Unicode是两种常见的字符编码. 它们的表示方法不一样,因而在程序中就要差别处理. 本文基于作者的实际开发经验,对ASCII与Unicode两种字符编码消息的写文件过程进 ...

  8. 慎重使用MySQL auto_increment

    在使用MySQL中,常常会在表中建立一个自增的ID字段,利用自增ID可以高速建立索引,也是MySQL官方比較推荐的一种方式,可是,这样的方式在大量数据且配置主从时,可能会出现因为自增ID导致同步失败的 ...

  9. filestream.read(buffer,offset,count)的正确解释

    filestream.read(buffer,offset,count) offset是buffer的偏移量 所以,filestream.read(buffer,1,count)会报下面的错 Syst ...

  10. Arcgis for Js之Graphiclayer扩展具体解释

    在前两节,讲到了两种不同方式的聚类,一种是基于距离的,一种是基于区域范围的,两种不同的聚类都是通过扩展esri/layers/GraphicsLayer方法来实现的.在本节,就具体的讲讲esri/la ...