zoukankan      html  css  js  c++  java
  • NOIP2013-2014提高组题目浅析

    1、前言

      迎接NOIP的到来。。。在这段闲暇时间,决定刷刷水题。这里只是作非常简单的一些总结。

     

    2、NOIP2014

    <1> 生活大爆炸之石头剪刀布(模拟)

    这是一道考你会不会编程的题目。。。方法有很多,预处理输赢矩阵,或者一大堆if什么的乱搞就行了。

     

    <2> 联合权值(搜索)

    简单的树上求解问题,由于只需要长度为2的链,只要能够清楚地分析出各种情况,一遍DFS直接出来:自身节点与祖父节点有一对;自身节点与兄弟节点有若干对。在计算权值的时候存在一个优化,即如果每次得到一对之后就计算貌似会超时,我们可以对于每一个点记录与其距离为2的点,求和,最后在相乘。

     

    <3> 飞扬的小鸟(动态规划)

    完全背包动态规划+优化。个人感觉70分的裸DP比50分暴力还好拿些,毕竟搜索写起来比较麻烦。但是由于n<=10^5(貌似是的?),O(n^2)是过不了的,需要强加优化至O(n log n)。

     

    <4> 无线网络发射器(模拟)

    这道题给我们的教训就是,预估时间复杂度是很重要的。听说考场上有多人加些优化然后跪了的。。。数据范围极小,所以我们暴力枚举地图上所有点,然后求在发射器范围内点的个数,所以这又是一道考你会不会变成的题目。

     

    <5> 寻找道路(搜索/最短路)

    正反进行两次搜索(DFS/BFS/SPFA均可,但是推荐BFS+SPFA),第一次求得所有可以经过的点;第二次直接跑就是了。

     

    <6> 解方程 (高精度/哈希/其他)

    这次NOIP唯一上点档次的题目吧?30分暴力;50分直接高精度;70分的话就需要一定技巧了,取几个合适的模,然后进行判断,在取模意义下为0就认为是为0。注意到在mod p的情况下,将x和x+kp代入,解显然是相同的,所以随便搞搞就行了。用FFT什么的就不说了。

     

    3、NOIP2013

    <1> 转圈游戏(GCD+快速幂)

    转圈次数无比之大,但是显然结果是存在循环的。首先通过寻找规律,求得循环节,然后利用快速幂,求得答案。

     

    <2> 火柴排队(逆序对+树状数组)

    这道题个人觉得有点非主流。首先我确保我考场上写搜索,写贪心,写动规,但是觉得不会知道逆序对这种东西,况且我YY能力也是有限的。。。。知道逆序对之后,基本就保证80分了,因为直接O(n^2)循环就行了;但是由于100分数据,n<=10^5,故需要利用树状数组优化到O(n log n)。

     

    <3> 货车运输(最大生成树+倍增LCA)

    裸生成树30分。对于100分,首先用Kruskal算法求出最大生成树,然后可以利用树上倍增LCA加速。也是刚刚学会的。

    <4> 积木大赛(二分)

    每次一排排搭积木可以看成一排排删积木,二分查找当前区间中最小值,然后删去,以最小值点为中点,再分别求解。

    <5> 花匠(贪心/动态规划)

     贪心好!写!多!了!去年这个时候还不是很理解,为自己智商捉急。动规也不是很难,70分很轻松,但是想要100的话需要稍微想一想。强烈推荐贪心。

    <6> 华容道(最短路)

    60分直接用BFS解决。100分的话需要利用SPFA优化每一遍BFS所走的重复的路。

  • 相关阅读:
    网易前端规范
    为什么很多网页里不直接用script标签引入JS文件,而是通过函数新建script,然后添加属性,再来引入呢?
    jQuery报错:Uncaught ReferenceError: $ is not defined
    PHP获得网页源码
    JAVA获取网页源码
    ctci(1)
    Hanoi
    计算多选框打勾的数目
    ThreadLocalClient小应用
    ajax动态刷新下拉框
  • 原文地址:https://www.cnblogs.com/jinkun113/p/4806745.html
Copyright © 2011-2022 走看看