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也可以。

最新文章

  1. C++随笔:.NET CoreCLR之corleCLR核心探索之coreconsole(1)
  2. Android api SmsMessage类createFromPdu(byte[] pdu) is depracted(不推荐使用,过时的)
  3. window.onscroll页面滚动条滚动事件
  4. 20145218 《Java程序设计》课程总结
  5. python随机数
  6. 第一贱-UILabel
  7. 在linux下文件转码
  8. FASTCGI程序,做个备份,以后用
  9. 【转】Android-Input 触控笔
  10. FMDB源码解析
  11. 利用开机账户登录“轻松访问”创建Windows后门
  12. java 多线程中的锁的类别及使用
  13. mybatis学习系列一
  14. nodejs 网上下载图片到本地,并判断图片路径是否存在
  15. OC @property @synthesize和id
  16. Pig安装与应用
  17. Android用shareUserID实现多个Activity显示在同一界面
  18. java代理-cglib
  19. logstash通过redis收集日志
  20. iOS开源项目:asi-http-request

热门文章

  1. Update openssh7.9 on centos6
  2. Hyper-V 替换 vmwp
  3. [转] UniCode编码表
  4. pycharm创建python模板文件
  5. 用groovy脚本进行每日工作的自动化【groovy】
  6. 【Android】Android处理Home键方法小结
  7. net core体系-web应用程序-4asp.net core2.0 项目实战(1)-5项目数据库操作封装操作-EF框架
  8. Python 面向对象3-类变量与实例变量
  9. git之一: git基础
  10. 查看当前的app运行的是哪个Activity