zoukankan      html  css  js  c++  java
  • [BZOJ2038]小Z的袜子(莫队算法)

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2038

    分析:莫队算法

    莫队算法是一种思想……

    处理问题:不带修改的区间询问

    使用要求:[l-1,r] [l,r-1]的结果可由[l,r]的答案在O(1)或O(logn)的时间内推出

    具体步骤:

      1、对整个区间轴分成根号n块

      2、以l所在的块的编号为第一关键字,r为第二关键字给所有询问排序方便处理

      3、对于每个块内的询问单独处理

        ①对于当前块里的第一个询问暴力求解

        ②剩下的在第一个询问基础上递推得到

    那么对于本题,只要说明如何从[l,r]的答案推到[l-1,r] [l,r-1]就行了

    注意题目最后求的是概率,那么我们不妨推种类,概率最后除以总数就行了

    假设对于某个块,第一个询问[l,r]我们已经解决,且完成了这个询问的col[]数组(col[i]表示第i种颜色出现的次数)

    那么考虑区间[l-1,r],假设第i-1位的颜色为k,那么ans[l-1,r]=ans[l,r]+添加一个颜色k多的种类

    那么这个东西是多少呢,其实就是C(col[k]+1,2)-C(col[k],2)=col[k]啦

    对于[l,r-1]就是减了啊……完美解决了……

    总结:对于那成堆的无修改的区间问题,可以先考虑莫队算法啦……即使数据结构可以破,但是绝壁没莫队算法好!(其实是代码短~(≧▽≦)/~啦啦啦)

  • 相关阅读:
    斐波那契数列
    旋转数组的最小数字
    用两个栈实现队列
    重建二叉树
    从尾到头打印链表
    2020/01/11,人活着是为了一口气
    2020/01/11,放肆和克制,敏感层次
    2020/01/11,记忆单元
    2020/01/11,经济基础决定高层建筑和个性
    git
  • 原文地址:https://www.cnblogs.com/wmrv587/p/3876643.html
Copyright © 2011-2022 走看看