【CF453D】 Little Pony and Elements of Harmony(FWT)
题面
设\(a\)的递推公式为
\]
其中\(\oplus\)为异或,\(count(i)\)表示\(i\)的二进制中\(1\)的个数
给出\(a_0,b\),求\(a_t\),\(t\leq 10^{18}\)
题解
如果我们定义\(c_i=b[count(i)]\)
这显然就是个异或卷积了……因为要卷\(t\)次,所以点值表示乘起来的时候要把\(c_i\)快速幂一下
然而有个尴尬的问题就是这里的模数可能是偶数……那么我们\(IDFT\)的时候\(2\)显然没有逆元啊……
解决方法是把模数乘上\(lim\)(即\(fwt\)的数组长度),那么最后\(IDFT\)之后把所有数对\(lim\)下去整就行了
记得得用快速乘
//minamoto
#include<bits/stdc++.h>
#define R register
#define ll long long
#define dd long double
#define fp(i,a,b) for(R int i=(a),I=(b)+1;i<I;++i)
#define fd(i,a,b) for(R int i=(a),I=(b)-1;i>I;--i)
#define go(u) for(int i=head[u],v=e[i].v;i;i=e[i].nx,v=e[i].v)
using namespace std;
char buf[1<<21],*p1=buf,*p2=buf;
inline char getc(){return p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++;}
int read(){
R int res,f=1;R char ch;
while((ch=getc())>'9'||ch<'0')(ch=='-')&&(f=-1);
for(res=ch-'0';(ch=getc())>='0'&&ch<='9';res=res*10+ch-'0');
return res*f;
}
ll readll(){
R ll res,f=1;R char ch;
while((ch=getc())>'9'||ch<'0')(ch=='-')&&(f=-1);
for(res=ch-'0';(ch=getc())>='0'&&ch<='9';res=res*10+ch-'0');
return res*f;
}
const int N=(1<<20)+5;
ll P;
inline ll add(R ll x,R ll y){return x+y>=P?x+y-P:x+y;}
inline ll dec(R ll x,R ll y){return x-y<0?x-y+P:x-y;}
inline ll mul(R ll x,R ll y){return x*y-(ll)((dd)x/P*y)*P;}
inline ll ksm(R ll x,R ll y){
ll res=1;
for(;y;y>>=1,x=mul(x,x))y&1?res=mul(res,x):0;
return res;
}
void Fwt(ll *A,int lim,int ty){
ll t;
for(R int mid=1;mid<lim;mid<<=1)
for(R int j=0;j<lim;j+=(mid<<1))
fp(k,0,mid-1)
A[j+k+mid]=dec(A[j+k],t=A[j+k+mid]),
A[j+k]=add(A[j+k],t);
if(!ty)fp(i,0,lim-1)A[i]/=lim;
}
int n,lim;ll t,a[N],c[N],sz[N],b[25];
int main(){
n=read(),t=readll(),P=read(),lim=(1<<n),P*=lim;
fp(i,0,lim-1)a[i]=read()%P;fp(i,0,n)b[i]=read()%P;
fp(i,0,lim-1)c[i]=b[sz[i]=sz[i>>1]+(i&1)];
Fwt(a,lim,1),Fwt(c,lim,1);
fp(i,0,lim-1)a[i]=mul(a[i],ksm(c[i],t));
Fwt(a,lim,0);
fp(i,0,lim-1)printf("%I64d\n",a[i]);
return 0;
}
【CF453D】 Little Pony and Elements of Harmony(FWT)的更多相关文章
- 【转】第8章 前摄器(Proactor):用于为异步事件多路分离和分派处理器的对象行为模式
目录: Reactor(反应堆)和Proactor(前摄器) <I/O模型之三:两种高性能 I/O 设计模式 Reactor 和 Proactor> <[转]第8章 前摄器(Proa ...
- 【LeetCode】895. Maximum Frequency Stack 解题报告(Python)
[LeetCode]895. Maximum Frequency Stack 解题报告(Python) 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxueming ...
- 【LeetCode】147. Insertion Sort List 解题报告(Python)
[LeetCode]147. Insertion Sort List 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: h ...
- 【原创】通俗易懂地解决中文乱码问题(2) --- 分析解决Mysql插入移动端表情符报错 ‘incorrect string value: '\xF0...
这篇blog重点在解决问题,如果你对字符编码并不是特别了解,建议先看看 < [原创]通俗易懂地解决中文乱码问题(1) --- 跨平台乱码 >. 当然,如果只是针对解决这个Mysql插入报错 ...
- 【分享】IT产业中的三大定理(一) —— 摩尔定理(Moore's Law)
科技行业流传着很多关于比尔·盖茨的故事,其中一个是他和通用汽车公司老板之间的对话.盖茨说,如果汽车工业能够像计算机领域一样发展,那么今天,买一辆汽车只需要 25 美元,一升汽油能跑四百公里.通用汽车老 ...
- 【分享】IT产业中的三大定理(二) —— 安迪&比尔定理 (Andy and Bill's Law)
摩尔定理给所有的计算机消费者带来一个希望,如果我今天嫌计算机太贵买不起,那么我等十八个月就可以用一半的价钱来买.要真是这样简单的话,计算机的销售量就上不去了.需要买计算机的人会多等几个月,已经有计算机 ...
- CJOJ 1087 【NOIP2010】乌龟棋 / Luogu 1541 乌龟棋(动态规划)
CJOJ 1087 [NOIP2010]乌龟棋 / Luogu 1541 乌龟棋(动态规划) Description 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 乌龟棋的棋盘是一行N个格子,每个 ...
- 【BZOJ5503】[GXOI/GZOI2019]宝牌一大堆(动态规划)
[BZOJ5503][GXOI/GZOI2019]宝牌一大堆(动态规划) 题面 BZOJ 洛谷 题解 首先特殊牌型直接特判. 然后剩下的部分可以直接\(dp\),直接把所有可以存的全部带进去大力\(d ...
- 【Loj117】有源汇上下界最小流(网络流)
[Loj117]有源汇上下界最小流(网络流) 题面 Loj 题解 还是模板题. #include<iostream> #include<cstdio> #include< ...
随机推荐
- 201671010140. 2016-2017-2 《Java程序设计》java学习第九周
第七章:<异常,断言和日志>知识点小结 本周,进行了对Java中的异常处理的了解学习,以下是部分所得. 一.未检查异常与已检查异常的区别: 未检查异常处理方法:1.捕获2.继续 ...
- cocos2dx 触摸屏的使用
只要继承与CCLayer的类都可以实现触摸功能.CCLayer类的触摸事件的一些接口如下: // 单点触碰 virtual bool ccTouchBegan(CCTouch *pTouch, CCE ...
- IDEA错误的忽略了智能补全代码,导致正确的代码自动提示不出来的问题
标题说起来有点绕,当今大部分IDE都提供 Alt+Enter 呼出自动补全菜单的功能,IDEA也不例外,今天手残了一下,具体问题如下: 1. 通常我们键入一个自定义类时IDEA会自动提示为红色,表示缺 ...
- 在tomcat中的conf文件夹下找server.conf 配置如下代码,可省略项目名路径访问 如 localhost:8080 即可访问到项目
<Context path="" docBase="C:\Workspaces\Projects\SLSaleSystem_dw\WebRoot" rel ...
- VM 监控信息布局
<div ng-show="showVmChart"> <div class="row"> <div class="co ...
- xgboost 里边的gain freq, cover
assuming that you're using xgboost to fit boosted trees for binary classification. The importance ma ...
- Java 前台后台数据传递、中文乱码解决方法
1.向前台传递数据;2.向后台传递数据;3.ajax post 提交数据到服务端时中文乱码解决方法;4.数组类型参数传递; 1.向前台传递数据:1.1 字符串数据传递: 这种方式只是单一的向前台传递 ...
- vmware workstation 12 密钥
VMware Workstation 12序列号:5A02H-AU243-TZJ49-GTC7K-3C61N
- 开源项目spring-shiro-training思维导图
写在前面 终于完成了一个开源项目的思维导图解读.选spring-shiro-training这个项目解读是因为它开源,然后涉及到了很多我们常用的技术,如缓存,权限,任务调度,ssm框架,Druid监控 ...
- HUST数媒1501班第2周作业成绩公布
说明 本次公布的成绩对应的作业为: 第2周个人作业:WordCount编码和测试 如果同学对作业成绩存在异议,在成绩公布的72小时内(截止日期4月26日0点)可以进行申诉,方式如下: 毕博平台的第二周 ...