zoukankan      html  css  js  c++  java
  • 2017.07.06【NOIP提高组】模拟赛B组

    Summary

      今天比赛感觉题目很奇葩,都可以用许多简单方法来做,正确性都显然,当然也有点水,也就是说是考我们的数感和数学知识,而程序,只是代码的体现。

      这次的时间安排感觉不错,因为很快就打完最后一道题了,后面的时间都在思考前面两道题

    Problem

    T1 护花

    题目大意

      牛都跑出去了,FJ想要把他们抓回来。抓每只牛需要2*Ti分钟的时间,每只牛在没有被要抓回去时,每分钟吃Di棵花,问怎么样抓牛才能使被吃掉的花尽量少。

    想法

      本来我是想设一个动态规划,F[i,j]表示第i头牛,是第j只被抓的,然后用堆等数据结构来维护。

      但是,有后效性,而且不确保在此之前,是否有出现过的j。

      比赛时只好打了一个递归。

      但是,就在草稿本上,惊奇的发现了个东西:

      例如:

        第一头牛 Ti:a  Di:b

        第二头牛 Ti:c  Di:d

      如果设先选第一头牛更优,那么有如下不等式

        2cb<2ad

        b/a<d/c.........通过某些转化得到

      也就是说,两只的情况下要满足这个条件。由特殊到一般,再试3,4的可以发现,其实就是求Di/Ti的序列(排序的),然后模拟一次就行了

      这道题有很好的草稿本技巧!

    T2 最高的奶牛

    题目大意

      FJ有N(1 <= N <= 10,000)头奶牛,编号为1到N,站成一条直线。每头奶牛自己的身高(正整数,秘密未知),告诉你最高奶牛的身高H及位置I,同时告诉你R(0 <= R <= 10,000)组信息,每组信息由两个数ai,bi组成,表示奶牛ai可以看到奶牛bi,这就意味着奶牛bi的身高至少和奶牛ai的身高一样高,同时奶牛ai到奶牛bi之间的奶牛身高必须低于奶牛ai
      现在要你求出每头奶牛最高可能的高度,保证有解。

    想法

      这道题不知道为什么可以这么做,感觉很神奇。

      设a,b是可以互相看到的两头牛,然后只要a,b在之前没有出现过,就把a+1~b-1内的数减一就行了,初始值为最高的奶牛高度。

    T3 最高的奶牛

    题目大意

      给出一段数,求这段数最大值减最小值是多少。

    想法

      线段树来维护区间最大值最小值就可以了。当然RMQ也可以。

  • 相关阅读:
    最值
    算数平均值/加权平均值
    jdbatemplate使用
    所有正规jar包
    java代码在计算机中经历的三个阶段,反射的原理
    lambda函数式编程思想
    重写equals方法
    安全牛-弱点扫描
    安全牛-主动收集
    安全牛-被动收集
  • 原文地址:https://www.cnblogs.com/philchieh/p/7128116.html
Copyright © 2011-2022 走看看