这道题目是香蕉的加强版

当m=100w时矩阵会很大,而且又有多组询问,所以这道题用原来香蕉的程序会T

所以我们需要更好点的做法

我们考虑优化我们的状态

首先考虑这道题的隐藏性质,考虑不合法的情况

那么A至少是B的2倍,我们考虑不合法的一段,容易证明这段的最大长度不会超过logm

不妨设s[i]表示长度为i的每个位置都不合法的方案数

由于长度是logm,所以对于s的求解是m*log^2m的

用一些奇技淫巧可以优化一下常数,使得复杂度接近m*logm

之后我们考虑容斥

设f[i][0]表示长度为i的不合法的位置至少为偶数个的方案数

f[i][1]表示长度为i的不合法的位置至少为奇数个的方案数

这是很容易的DP的,DP的时候枚举末尾一段有多少个连续不合法的即可

根据枚举的长度分奇数偶数讨论转移

之后我们发现这个转移是固定的,而且转移涉及的状态数只有2*logm个

所以我们可以考虑构造矩阵来优化转移

这样矩阵乘法一次的时间复杂度为8*log^3m,远远比上一道香蕉的做法要优秀

最后的答案显然是f[n][0]-f[n][1],对于每个询问暴力矩阵乘法就可以了

总时间复杂度O(logn*log^3m+mlogm)

就这样,我们就可以完美的解决这道题目了

在CTSC的时候,徐明宽大爷说矩阵乘法在求单行或单列的时候是可以做到n^2的

那么我们可以用这个方法继续优化EX_香蕉,这样就可以把T扩大,变成EX_EX_香蕉了

cojs EX_香蕉 题解报告的更多相关文章

  1. cojs 奈特 题解报告

    才知道knight念奈特,而不念科耐特 这个题显然是一个数据结构题目,我搬运的CF上的题 CF的题解好长超长哒,而且可以在线,但是并不能看懂 于是自己想了一个一种做法A掉了,唯一的缺陷就是做法有些繁琐 ...

  2. cojs 榴莲 题解报告

    首先这道题目是求第k大 求第k大我们有逐位确定,主席树,整体二分等等方法 首先我们考虑如何处理每个询问 我们可以二分答案k,之后扫一遍之前的操作 我们只需要知道有多少个权值>=k的操作经过当前点 ...

  3. cojs 强连通图计数1-2 题解报告

    OwO 题目含义都是一样的,只是数据范围扩大了 对于n<=7的问题,我们直接暴力搜索就可以了 对于n<=1000的问题,我们不难联想到<主旋律>这一道题 没错,只需要把方程改一 ...

  4. cojs 二分图计数问题1-3 题解报告

    OwO 良心的FFT练手题,包含了所有的多项式基本运算呢 其中一部分解法参考了myy的uoj的blog 二分图计数 1: 实际是求所有图的二分图染色方案和 我们不妨枚举这个图中有多少个黑点 在n个点中 ...

  5. 2015浙江财经大学ACM有奖周赛(一) 题解报告

    2015浙江财经大学ACM有奖周赛(一) 题解报告 命题:丽丽&&黑鸡 这是命题者原话. 题目涉及的知识面比较广泛,有深度优先搜索.广度优先搜索.数学题.几何题.贪心算法.枚举.二进制 ...

  6. 题解报告:hdu 1398 Square Coins(母函数或dp)

    Problem Description People in Silverland use square coins. Not only they have square shapes but also ...

  7. 题解报告:hdu 2069 Coin Change(暴力orDP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2069 Problem Description Suppose there are 5 types of ...

  8. 题解报告:hdu 1028 Ignatius and the Princess III(母函数or计数DP)

    Problem Description "Well, it seems the first problem is too easy. I will let you know how fool ...

  9. CF Educational Round 78 (Div2)题解报告A~E

    CF Educational Round 78 (Div2)题解报告A~E A:Two Rival Students​ 依题意模拟即可 #include<bits/stdc++.h> us ...

随机推荐

  1. js 函数闭包内部返回函数体调用方法难点解答

    今天在网上,看到一篇关于js函数难点的文章,js函数的一些难点.在那上面提了一下,关于js函数返回另一个函数的问题,并附上了一道面试题: var add = function(x){ var sum ...

  2. AndroidSDK无法下载API包的解决方法

    1:打开Android SDK Manager”,然后点击菜单栏中的“Tools”菜单选项,接下来只需选择“Options”选项即可打开设置窗体,在打开的选项中找到Others框,里面勾选第一个: F ...

  3. for xml path以及sql合并查询

    sql中for xml path的用法. http://www.cnblogs.com/yanghaibo/archive/2010/06/04/1751405.html

  4. Game Tutorials

    SDL: http://www.sdltutorials.com/tutorials        http://lazyfoo.net/ http://panda3d.noie.name/ http ...

  5. thinkpad t440p 解决无线网卡驱动

    $ wget https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1239578/+attachment/4057550/+files/rtl_9 ...

  6. php中const与define的使用区别 详解

    1.const用于类成员变量定义,一旦定义且不能改变其值.define定义全局常量,在任何地方都可以访问. 2.define不能在类中定义而const可以. 3.const不能在条件语句中定义常量 i ...

  7. 关于feature创建Lookup列的BUG

    使用Sharepoint 2013自带的创建栏,有如下的XML <?xml version="1.0" encoding="utf-8"?>< ...

  8. Java Day 01

    2-19交互方式 GUI Graphical User Interface CLI Command Line Interface JavaEE Enterprise Edition 13种技术 Jav ...

  9. 0x01第一个汇编程序

    ;将由text db 10,20,30,40定义的4个数相加,并输出其和. .386    ;指明指令集 .model flat,stdcall ;平坦模式,函数右边的参数先入栈 option cas ...

  10. 初识Qt Creator

    (1).Qt Creator是一个跨平台的.完整的Qt集成开发环境,其中包括了高级C++代码编辑器.项目和生成管理工具,下载地址http://download.qt.io/archive/qt/: ( ...