zoukankan      html  css  js  c++  java
  • [考试]20151012贪心

    1、前言

      NOIP前互测题第一弹——来自hcy的贪心专题。因为我考试前一天晚上手贱(真的算手贱吗)去BZOJ上刷题然后碰巧那道题就是今天的考试题,结果碰巧又被hcy注意到了。。。其实本来我无意去知道的。。结果就这样莫名其妙地A了。贪心什么的感觉还好,另外一道题以前做过,对于“三分”这个概念我印象还很深。

     

    2、Lawnmower 割草机

    大概题意:在n*m的0-1矩形中,从左上角(0,0)出发,每次只能朝两个方向移动——下,左或右。若当前行i为2的余数则向右,否则向右。求用最短路经过所有1的点。

    总结:只有60分,怪我没有把题目看清啊。因为只需要经过所有1的点,所以如果最后几行没有1的话,就不需要走到后面几行去了,这个地方需要特判一下。

    题解:贪心。首先假设每一行都一定有1,那么我们先求出每一行的最左端的1的位置和最右端的1的位置。因为要求必须走类似于“S”型的路,那么对于偶数行,横向距离为从当前位置走到当前行和下一行最右端的较大值,然后向下移动一格;奇数行反之,从当前位置走到当前行和下一行最左端的较小值,然后向下移动一格。

     

    3、Price 定价(BZOJ 4029)

    链接:http://www.cnblogs.com/jinkun113/p/4872826.html

     

    4、Food 外卖(BZOJ 3874)

    链接:http://www.cnblogs.com/jinkun113/p/4873174.html

     

    5、XOR XOR游戏

    大概题意:给出n个数,每次可以选出两个数相异或,并赋值给其中一个,可以异或无数次,求n个数最大和。

    题解(from http://blog.csdn.net/merlininice/article/details/18722907):

      我们可以用这n个数互相XOR直到每个数不能在变小(即变为极小值)(解决方法:贪心思想,先把每个数的最高位的位数变成不同的,然后通过最高位比较低的向量,把最高位高的数弄成极小。),然后我们可以用其他数将第一个XOR成极大值。(可以发现:1:极小值中,二进制数最高位为第i位的有且只有一个,与线性基相似。(否则可以用两个数XOR,变为两个更小的值)2:所得极大值一定是整个序列的最大值,可以发现,所有值化为极小值后,若二进制数最高位为第i位的数存在,那么二进制最高位大于i的数在第i位一定为0,也就是说所有非0值异或即可得XOR极大值)。
    可以发现:最后用极大值 XOR 其他极小值所获得的序列是一个可行的序列。
    证明所得每个解为最大:
      取第i个极小值与第一个XOR,设得到s,假设还可以获得一个更大的值,那么肯定会在XOR另一个极小值b。设b的二进制最高位为j,那么s在第j位的值一定为0。(否则不会更优)易知:第一个极大值在第j位一定是1.而s第j位为0,那么可知第i个极小值的第j位为1(1^1 = 0)。发现这是不合法的。(这样第i个极小值^b可以变的更小,与其为极小值不符)。复杂度:O(n^2)。

  • 相关阅读:
    VMWare虚拟机非正常关机后无法启动
    curl: (1) Protocol "'https" not supported or disabled in libcurl的解决方法
    spring security入门
    oracle中可以使用drop、delete和truncate三个命令来删除数据库中的表
    com.github.pagehelper:pagehelper:jar:3.4.2-fix.jar
    oracle jdbc驱动 ojdbc14-10.2.0.4.0.jar 网盘下载
    PDF复制SQL语句没有换行符的解决办法
    rpm -qa | grep mysql查询不到MySQL
    新文预览 | IoU-aware Single-stage Object Detector for Accurate Localization
    目标检测 | RetinaNet:Focal Loss for Dense Object Detection
  • 原文地址:https://www.cnblogs.com/jinkun113/p/4872752.html
Copyright © 2011-2022 走看看