cojs EX_香蕉 题解报告
这道题目是香蕉的加强版
当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_香蕉 题解报告的更多相关文章
- cojs 奈特 题解报告
才知道knight念奈特,而不念科耐特 这个题显然是一个数据结构题目,我搬运的CF上的题 CF的题解好长超长哒,而且可以在线,但是并不能看懂 于是自己想了一个一种做法A掉了,唯一的缺陷就是做法有些繁琐 ...
- cojs 榴莲 题解报告
首先这道题目是求第k大 求第k大我们有逐位确定,主席树,整体二分等等方法 首先我们考虑如何处理每个询问 我们可以二分答案k,之后扫一遍之前的操作 我们只需要知道有多少个权值>=k的操作经过当前点 ...
- cojs 强连通图计数1-2 题解报告
OwO 题目含义都是一样的,只是数据范围扩大了 对于n<=7的问题,我们直接暴力搜索就可以了 对于n<=1000的问题,我们不难联想到<主旋律>这一道题 没错,只需要把方程改一 ...
- cojs 二分图计数问题1-3 题解报告
OwO 良心的FFT练手题,包含了所有的多项式基本运算呢 其中一部分解法参考了myy的uoj的blog 二分图计数 1: 实际是求所有图的二分图染色方案和 我们不妨枚举这个图中有多少个黑点 在n个点中 ...
- 2015浙江财经大学ACM有奖周赛(一) 题解报告
2015浙江财经大学ACM有奖周赛(一) 题解报告 命题:丽丽&&黑鸡 这是命题者原话. 题目涉及的知识面比较广泛,有深度优先搜索.广度优先搜索.数学题.几何题.贪心算法.枚举.二进制 ...
- 题解报告:hdu 1398 Square Coins(母函数或dp)
Problem Description People in Silverland use square coins. Not only they have square shapes but also ...
- 题解报告:hdu 2069 Coin Change(暴力orDP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2069 Problem Description Suppose there are 5 types of ...
- 题解报告: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 ...
- CF Educational Round 78 (Div2)题解报告A~E
CF Educational Round 78 (Div2)题解报告A~E A:Two Rival Students 依题意模拟即可 #include<bits/stdc++.h> us ...
随机推荐
- jQuery 判断所有图片加载完成
对于图片的处理,例如幻灯片播放.缩放等,都是依赖于在所有图片完成之后再进行操作. 今天来看下如何判断所有的图片加载完成,而在加载完成之前可以使用 loading 的 gif 图表示正在加载中. 一.普 ...
- php var_export与var_dump 输出的不同
var_export必须返回合法的php代码,var_export返回的代码,可以直接当作php代码赋值个一个变量. 而这个变量就会取得和被var_export一样的类型的值. 问题描述: 在跟踪 ...
- CLR via C# I/O基元线程同步构造
1. 分为用户模式构造和内核模式构造 2. 用户模式构造 a.易失构造 在一个简单数据类型的变量上执行原子性读或写操作 VolaileWrite 强制address中的值在调用时写入,除此之外,按照源 ...
- spring中controller
提示:原网站已由百度转码,以便在移动设备上查看. 第七城市 (Portal 开发读书笔记)Spring Portlet MVC 测试Controller 2012-04-28 16:32:44 - - ...
- php微型mvc框架创建步骤
创建数据库和表结构,并且添加模拟数据: 新建models.views.controllers.utilities和include五个文件夹:models:模型层 model.php:模型基类 ...
- 安装Golang 1.6及开发环境
安装Golang 1.6及开发环境=====================================> 下载软件 * go1.4.2.linux-amd64.tar.gz ...
- TQ2440开发板网络配置方式
一.命令行模式 1.设置IP.子网掩码(netmask) #ifconfig eth0 <IP地址> netmask <子网掩码> up up 表示开启网卡eth0,可以不加 ...
- MVC C# 调用存储过程
SqlParameter[] param ={ new SqlParameter("@SignInfoId ",SqlDbType.Int), new SqlParameter(& ...
- 序列化form表单内容为json对象
SourceCode: ; (function ($) { $.fn.extend({ serializeJson: function () { var json = {}; $(this.seria ...
- python学习小结2:if和while控制语句
if语句 if语句中,代码块是按缩进的空格数量来判断的,也就是说空格数量一致的相邻行会被当作一个代码块,当if的条件成立的时候它就会得到执行. x = 100 if x > 50: print ...