zoukankan      html  css  js  c++  java
  • POJ3276(遍历+区间修改)

    http://poj.org/problem?id=3276

    题意:n(n<=5000)头牛站成线,有朝前有朝后的的,然后每次可以选择大小为k的区间里的牛全部转向,会有一个最小操作m次使得它们全部面朝前方。

    问:求最小操作m,再此基础上求k。

    首先不要看错题意,这不是一个求最小k的,而是求m最小时,k为多少,所以不能够使用二分进行解题,再看数据有5000头牛,则算法复杂度至多为 n^2 ,而首先k的遍历是必须的,这就已经是n了,那么就需要在遍历过程中的每个k求最小操作数时最多为n,也就是最多只能遍历一次就要求出相应k的最小操作数,由于是区间修改,所以可以借鉴之前的一道树状数组区间修改的题目,用一个sum表示所有包含当前位的区间的反转次数(在遍历过程不断更新),所以只需要在遍历过程在末尾加上前一位操作的反转次数,如果首元素已经波及不到当前元素则减去,最后对剩余牛进行遍历检验是否符合要求即可

    (这个思路和上一篇博客那个牛踩踏板的思路相仿,

    上一篇是对之前行的每个格子进行查询,如果不合格,通过改变当前行来改变之前行,最后查询最后一行是否合格即可

    (也就是枚举第一行,然后只考虑下一行对之前行的影响,最后看最后一行是否满足要求)

    这一篇则是对当前位的格子进行查询,如果不合格,改变当前格子,最后查询那些不能自行反转的格子即可

    (也就是只考虑之前格子对当前格子的影响,不考虑后来格子对该格子的影响,然后一点点遍历下去,最后检查最后几个格子即可)

  • 相关阅读:
    LAMP 环境搭建备忘 -- Linux的安装(一)
    Qt 的一些浅知识点
    chm 转 txt
    SQL 语句 (二) --- SELECT
    SQL语句 (一)
    量子电路
    量子隐形传态 Quantum Teleportation
    量子逻辑门
    量子纠缠2——CHSH不等式
    量子纠缠1——量子比特、Bell态、EPR佯谬
  • 原文地址:https://www.cnblogs.com/MekakuCityActor/p/8564913.html
Copyright © 2011-2022 走看看