zoukankan      html  css  js  c++  java
  • 2017暑期训练小结

    新一次的Noip即将在11月11号举行,这一次的Noip对我们也是十分重要的,毕竟是初中阶段的最后一次Noip了,也应该给自己的初中oi一个完美的结束。
    这一次的Noip我们这个暑假要努力的练习,但是也应该不止练习。
    首先,我们应该好好地分专题做题。我打算这一暑假及开学后到Noip之前的这一阶段,按这样的顺序练习:
    模拟与暴力——动态规划及递推——分治——贪心——搜索——高精度——栈和队列——数学——树和图论——其他实用的瞎搞技巧
    这里的每一个算法都是比较重要的。哪怕就是最后的瞎搞和暴力算法,也是十分有用的。yql大佬曾经在上课的时候给我们算过,对于Noip2016的提高组,就算什么高级算法都不会,仅用暴力,就可以得到400-500这样的分数。
    再其次,剩下的是一些比较基础的算法。这些算法必须一一地过关才行。瞎搞与暴力虽然可以让我们拿分,但是毕竟这些不是正道。我们还是应该打好基础,把这些基础算法都学好,一一巩固,不然也走长久。
    现在的几个月,每天都应该编程不少于3小时,好好巩固基础!
    同时,还应该提高自己的正确率。否则,就算设计完一个程序,即使能想出来算法,却在很多地方写错了,还不如暴力骗分拿的分多。那么应该如何提高正确率呢?我在这里总结了几点:

    1. 写完一个程序以后,不要急着去测试样例。一般的样例都是很弱的数据,也会有很多特殊性,通常情况下,即使样例测过了,然而程序却不一定对。而样例过了,反而容易让人放松警惕性,轻易地就把这道题放过去了。
    2. 静态查错
      这个非常重要!静态查错的时候,应该去考虑一些问题。比如,(以下都是亲身经历总结,可能不全)
      • 我们min,max的初值是否可以算作INF,会不会有数超过它?
      • 我们对一些变量进行初始化以后,会不会导致这个变量因为一些运算而爆了变量范围?(主要是图论)
      • 中间变量以及答案会不会爆int?如果是必须,就用long long。会不会爆long long?同样,如果是必须,就要用高精度。但如果不是必须,就想方设法避开这个变量。
      • 有没有漏考虑一些条件?输入的变量是否都用到了?(如果实在用不到我也没办法)一般输入的变量肯定有用,不然一般是算法有误或不是最优。比如Noip2016普及组倒一,输入的n看似没有用,其实它是最优化算法的一个十分重要的变量。
      • 有没有考虑到一些特殊情况?有些特殊情况可能不适用这个算法,需要特判。
      • 数组开够了没?比如对于无向图,邻接表要开两倍;对于线段树,tree数组需要开到4倍;对于大多数倍增算法,LOG开的够不够;对于归并算法,数组要开两倍。
      • 变量或数组初值赋了吗?
      • 负数问题?可能出现负数吗?这会影响读入优化,会影响dijkstra算法,负环会影响SPFA等等。
      • 在这里做这个操作真的合适吗?
      • 变量名有没有打错?
      • 对于多任务的问题,初始化完整吗?上一次的哪些变量会对这次有一影响?比如ans,tot,cnt,head数组,visit数组……
      • ………………
    3. 对拍
      对拍可以用来检验程序正确性。写一个有正确性保证的算法(比如暴力算法等)制造测试数据来测一下自己的程序。

    此外,写完一道题以后可以试着来写些解题报告。这样可以提高自己对算法的认识。
    差不多了,总之这个暑假应该扎扎实实地练习,提高正确率,争取在Noip2017取得优异的成绩。

  • 相关阅读:
    sock编程
    Exceptional c++
    sort
    实现UDP高效接收/响应
    Iterator invalidation(迭代器失效)
    php 判断一个点是否在一个多边形区域内
    PHP 如何在txt里查找包含某个字符串的那一行?
    php 实现栈与队列
    微信支付 接口
    文章添加,删除,修改,分页列表
  • 原文地址:https://www.cnblogs.com/hankeke/p/Summer-Training-Summary-2017.html
Copyright © 2011-2022 走看看