【bitset 技巧 分块】bzoj5087: polycomp
神仙zq发现了${n^2\sqrt n}\over 32$做法
Description
Input
Output
题目分析
陈老师神题x1
观察到这里多项式的所有操作都是在系数$\mod 2$的意义下的,因此可以用bitset来加速多项式的一些操作。例如$O(n^2)$实现多项式取模。
void mod(poly &a, int pos)
{
for (int i=pos; i>=p; i--)
if (a[i]) a ^= c<<(i-p), a[i] = 0; //我第一次居然把标红地方给忘了
}
但是如同很多bitset的技巧题一样,非常重要的一点是bitset每次整体操作的复杂度是 $O(size)$ 的。
这意味着$Poly\, +:O(n), \, Poly\, *:O(n^2)$
接下去我们从暴力开始谈起。
暴力做法 $O({{n^3}\over 32})$
第一个需要解决的问题是:$f(g(x))$。那么我们只需要对$g(x)$求$k$次幂(也即最暴力地k次自乘),再将这些结果相加得到多项式$f(g(x))$。至于取模的过程,则可以在每次multiply的时候顺带模干净,这样最终相加得到的结果就是在模多项式意义下的答案。
void mod(poly &a, int pos) //pos是a的度数
{
for (int i=pos; i>=p; i--)
if (a[i]) a ^= c<<(i-p), a[i] = ;
}
void mult(poly a, poly b, poly &ret) //ret=a*b
{
ret.reset();
for (int i=; i<=p; i++)
if (a[i]) ret ^= b<<i; //这里就是模拟n^2多项式乘法的过程
mod(ret, p<<);
}
总的代码:
#include<bits/stdc++.h>
const int maxn = ;
typedef std::bitset<maxn> poly; int n,m,p;
poly a,b,c,tmp,cnt; void input(poly &a, int &n)
{
scanf("%d",&n);
for (int i=, x; i<=n; i++)
{
scanf("%d",&x);
if (x) a.set(i);
}
}
void mod(poly &a, int pos)
{
for (int i=pos; i>=p; i--)
if (a[i]) a ^= c<<(i-p), a[i] = ;
}
void mult(poly a, poly b, poly &ret)
{
ret.reset();
for (int i=; i<=p; i++)
if (a[i]) ret ^= b<<i;
mod(ret, p<<);
}
int main()
{
input(a, n), input(b, m), input(c, p);
tmp[] = , mod(b, m);
for (int i=; i<=n; i++)
{
if (a[i]) cnt ^= tmp;
mult(tmp, b, tmp); //复杂度n^3在这里
}
while (p>=&&!cnt[p]) --p;
if (p==-) puts("0 0");
else{
printf("%d",p);
for (int i=; i<=p; i++)
printf(" %d",cnt[i]?:);
}
return ;
}
对系数按10位分块 $O({{n^3}\over 320})$
参见法老博客:[BITSET 分块] BZOJ5087. polycomp
注:md[t]并不一定要等于0.这里的取模多项式最高位对计算无影响。
容易发现这种做法的复杂度的阶仍然是$n^3$.
对$i=a\sqrt k+b$分块 $O({{n^2\sqrt n}\over 32})$
233
【bitset 技巧 分块】bzoj5087: polycomp的更多相关文章
- Codeforces-914F Substrings in a String (Bitset求T串中S串出现次数)
之前有过区域赛,简化版问题: 给定一个小写字符组成的字符串S,(|S|<1e5,下标从1开始),现在有Q种操作,对于每个操作Q(Q<=1e5),输入opt, 如果opt==1,输入x,c, ...
- bzoj3758. 数数
题解: 一波优秀的打表技巧 分块打表,分成1000组,打表打出来 另外10^6暴力算
- ACM-ICPC国际大学生程序设计竞赛北京赛区(2015)网络赛 Scores
#1236 : Scores 时间限制:4000ms 单点时限:4000ms 内存限制:256MB 描述 Kyle is a student of Programming Monkey Element ...
- CTS&&APIO2019爆零记
如果你只好奇测试相关请跳至day 2 day 3 day 6 scoi 2019 之后 由于实力问题,省选的时候排名在三十多,显然是没有进队.不过可能是受过的打击比较多,所以还没有特别颓废,甚至连 ...
- 个人训练记录(UPD 9.16)
本文章记录一些较难的题,摘自自己的blog中的其他文章.也有些单独成章有点浪费的题也写在里面了. 2019.7.15-2019.7.21 1182F(2900) 题意:求在区间 \([a,b]\) 中 ...
- ACM-ICPC Asia Beijing Regional Contest 2018 Reproduction hihocoder1870~1879
ACM-ICPC Asia Beijing Regional Contest 2018 Reproduction hihocoder1870~1879 A 签到,dfs 或者 floyd 都行. #i ...
- Sobol 序列并行化的实践经验
目录 Sobol 序列并行化的实践经验 随机数发生器并行化的常见策略 Sobol 序列的原理和跳转功能 Sobol 序列并行化实践 分块策略 蛙跳策略 蛙跳策略的计算量分析 减少异或计算的技巧 分块策 ...
- 【分块】【bitset】hdu6085 Rikka with Candies
给你数组A和B,A B中的元素大小都不超过5w,且两两不同. q次询问,每次给你个k,问你有多少对(i,j),满足A(i)%B(j)==k. 如题目所言模拟bitset的过程,实质上是个分块,每块的大 ...
- 种树 by yoyoball [树分块+bitset]
题面 给定一棵树,有点权 每次询问给出一些点对,求这些点对之间的路径的并集上不同权值的个数,以及这些权值的$mex$ 思路 先考虑只有一对点对,只询问不同权值个数的问题:树上莫队模板题 然后加个$me ...
随机推荐
- SpringBoot2.0 基础案例(09):集成JPA持久层框架,简化数据库操作
一.JAP框架简介 JPA(Java Persistence API)意即Java持久化API,是Sun官方在JDK5.0后提出的Java持久化规范.主要是为了简化持久层开发以及整合ORM技术,结束H ...
- mysql5.7安装部署后初始密码查看以及修改
一.查看初始密码以下两种方法: 1.找到自己的error.log日志文件,执行自己的命令,红色标记的部分为初始化密码. grep 'temporary password' /data/mysql/er ...
- Struts2拦截器再认识
拦截器(Interceptor)是 Struts 2 的核心组成部分. Struts2 很多功能都是构建在拦截器基础之上的,例如文件的上传和下载.国际化.数据类型转换和数据校验等等. Struts2 ...
- java中存储金额
很早之前, 记得一次面试, 面试官问存储金钱用什么数据类型? 当时只知道8种数据类型(boolean, byte, short, int, long, float, double, char)的我, ...
- 牛客网Java刷题知识点之关键字static、static成员变量、static成员方法、static代码块和static内部类
不多说,直接上干货! 牛客网Java刷题知识点之关键字static static代表着什么 在Java中并不存在全局变量的概念,但是我们可以通过static来实现一个“伪全局”的概念,在Java中st ...
- 【干货分享】大话团队的GIT分支策略进化史
封面 作为一名85后的技术男,一转眼10年过去了(一不小心暴露了年龄,虽然我叫18岁fantasy),亲手写代码已经是5年前了,目前主要负责公司的软件产品的规划和设计(所以最近写的东西也主要与设计和产 ...
- CentOS 6.2安装配置LAMP服务器(Apache+PHP5+MySQL)
准备篇: 1.配置防火墙,开启80端口.3306端口 vi /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp - ...
- 常用的 HTML 头部标签
曾几何时,我们已经不再手写 HTML 标签.Emmet.Markdown 等工具让我们「健步如飞」,但是我们真的了解这些标签了吗? 基本标签 使用 HTML5 doctype,不区分大小写. < ...
- It is not the destination so much as the journey, they say.
It is not the destination so much as the journey, they say. 人家说目的地不重要,重要的是旅行的过程.<加勒比海盗>
- specrate 与specspeed 的区别
What is the difference between a "rate" and a "speed" metric?There are several d ...