q-analog 学习笔记(待整修)
联考题考这个不会就来学了
首先给出对其的定义。
对于一个对象 \(u\),构造关于 \(q\) 的某表达式 \(f(q)\),使得:
\]
然而这个可能没有很大用。真正 OI 有用的还是要实际一点。
定义与简单性质
\]
把 \(f(x)f(qx)f(q^2x)\dots f(q^{n-1}x)\) 记为 \(f^{(n;q)}(x)\),比如
\]
从定义不难看出若干性质。
[-n]_q=-q^{-n}[n_q],[n]_{1/q}=q^{1-n}[n]_q,[n]_{1/q}!=q^{-\binom{n}{2}}[n]_q\\
\binom{n}{k}_{1/q}=q^{-k(n-k)}\binom{n}{k}_q,\binom{n}{k}_q=\binom{n}{n-k}_q\\
\binom{n}{k}_q=\binom{n-1}{k-1}_q+q^k\binom{n-1}{k}_q=q^{n-k}\binom{n-1}{k-1}_q+\binom{n-1}{k}_q\\
\binom{r}{k}_q=(-1)^kq^{kr-\binom{k}{2}}\binom{k-r-1}{k}_q
\]
由于
\]
有
\sum_{i\le n} q^{x}\binom{x}{k}_q=q^k\binom{n+1}{k+1}_q,\sum_{k=0}^mq^k\binom{r+k}{k}_q=\binom{r+m+1}{m}_q=\sum_{k=0}^mq^{(r+1)(m-k)}\binom{r+k}{k}_q\\
\]
由上面可以得到平行生成函数和上指标生成函数:
=\sum_{l\ge 0}q^l\binom{m+l}{l}\sum_{k\ge l}z^k=\sum_{l\ge 0}q^l\binom{m+l}{l}\frac{z^l}{1-z}\\
=\frac{1}{1-z}\sum_{k\ge 0}(qz)^k\binom{m+k}{k}\\
\therefore \sum_{k\ge 0}\binom{m+k}{k}_qz^k=(1-z)^{(m+1;q)}(\text{recursive proof})
\]
同样,显然
\]
最后补两个:
q-三项式定理:
\]
这是很明显的。
q-范德蒙德卷积
\]
q-二项式系数的若干其他性质
q-二项式定理及代数证明
\]
证明:
显然只需考虑 \(x=1\)。
考察
F_y(z)=\frac{1+z}{1+y^nz}\prod_{i=0}^{n-1}(1+y^{i+1}z)=\frac{1+z}{1+y^nz}F_y(yz)\\
(1+y^nz)F_y(z)=(1+z)F_y(yz)\\
\sum_{i=0}^nf_iz^i+f_iy^nz^{i+1}=\sum_{i=0}^n f_iy^iz^i+f_iy^iz^{i+1}\\
(1-y^i)f_i=f_{i-1}(y^{i-1}-y^n)\\
f_i=\frac{y^{i-1}-y^n}{1-y^i}f_{i-1}
\]
展开,上面每项提取 \(y^{i-1}\) 即证。
又有
\]
这个式子在计算排列逆序对数有应用。
不难发现和求出 \([n]_q!\) 的认为 \(q\) 是变量的生成函数前 \(m\) 项等价。(说法不太准确?)
就是需要快速球出 \((1-q)^{(n;q)}\)。
根据 q-二项式定理
\]
利用
\]
转移即可。
发现只需递推至 \(\sqrt{m}\) 项。复杂度 \(O(m\sqrt m)\)。常数极小。
注意到 \(\exp\) 也可以求这个,但是。。\(\exp\) 常熟实在是太大了。
q-Lucas 定理及代数证明
令 \(a=\delta_q(p)\) ,即 \(\min(\{a|q^a\equiv 1\pmod p\})\)。
Lemma:
\]
证明:注意到 \([a]_q!=0\)。
推论:
\]
证明:
\]
唯一有贡献的是 \(k=0\) 和 \(k=a\),为 \(1\),即证。
q-Lucas Theorem:
\]
证明:
\equiv [z^m]\left((1+z)^{(a;q)}\right)^{\lfloor n/a\rfloor}(1+z)^{(n\bmod a;q)}\pmod p\\
\equiv [z^m](1+z^a)^{\lfloor n/a\rfloor}(1+z)^{(n\bmod a;q)}\pmod p\\
\equiv \left([z^{\lfloor m/a\rfloor}](1+z)^{\lfloor n/a\rfloor}\right)\left([z^{m\bmod a}](1+z)^{(n\bmod a;q)}\right)\pmod p\\
\binom{\lfloor n/a\rfloor}{\lfloor m/a\rfloor}q^{\binom{m\bmod a}{2}}\binom{n\bmod a}{m\bmod a}_q
\]
代数地证明 q-二项式系数为整数
这里先给个分圆多项式定义:
\Phi_n(x)=\prod_{(d,n)=1,d\le n}(x-\zeta_d)\\
\]
为了刻画整数 q-模拟,有:
\]
证明:
\because\forall k\in[1,n],ord(\zeta_1^k)\mid n\\
\therefore (x-\zeta_1^k)\mid\prod_{d|n}\Phi_d(x)\\
\therefore (x^n-1)\mid\prod_{d|n}\Phi_d(x)\\
\because \gcd(\Phi_{d_1}(x),\Phi_{d_2}(x))=1,\forall d\mid n,\Phi_d(x)\mid (x^n-1)\\
\therefore \prod_{d|n}\Phi_d(x)\mid(x^n-1)
\]
两者均为首一多项式,即证。
Gause Lemma:两个本原多项式的乘积仍然是本原多项式。本原多项式的定义是系数最大公约数为一的多项式。
有:(即分圆多项式系数是整数)
\]
证明:
\(n=1\) 时为 \(x-1\),成立。
归纳,
\]
根据归纳假设, \(\Phi_d(x)\) 为本原多项式,故
\]
为本原多项式。
这个和左项都是首一本原多项式,即证。
那么我们可以证明了!
[n]_q!=\prod_{d\ge 2}\Phi_d(q)^{\lfloor n/d\rfloor}
\]
然后我们发现 \(\lfloor n/d\rfloor\ge \lfloor m/d\rfloor+\lfloor(n-m)/d\rfloor\),这样就(类似 \(q\to 1\) 勒让德定理)地完成了证明。
若干组合性质
\]
证明:
设 \(f_i=\operatorname{card}(\{j\mid j<i\ \land \ p_j>p_i\})\),容易发现 \(f\) 和 \(p\) 构成双射。
注意到
\]
那么 \([i]_q=\sum q^{f_i}\),从而原式是显然的。
\]
其中 \(S\) 是 \(a_i\) 个 \(i\) 元素(对于所有 \(i\))构成的排列集合。
\]
我的另一篇博客 证明了前一个等号。(后面这个等号是 trival 的)
求 \(\mathbb{F}_q^n\)(在模 \(q\) 意义下的 \(n\) 维整数空间)大小为 \(k\) 的线性无关向量组个数。\(q\) 为质数。
不难发现第一次可以选 \(q^n-1\)(不能选 \(\bf{0}\)),第二次 \(q^n-q\)(第一个会 ban 掉 \(q\) 个),如此下去。
记有 \(((n)_k)_q\) 个 ,那么
\]
不难验证,
\]
特别地, \(k>n\) 时, \(((n)_k)_q=0\)
CF1603F
tourist场切失败
求 \(\mathbb{F}^k_2\) 中不能线性表出 \(\bf x\) 的大小为 \(n\) 的可重向量组个数。(注意 \(nk\) 和上面反了)
\(\sum k\le 5\times 10^7,n\le10^9\)
若 \(\bf {x=0}\),那么就是 \(((k)_n)_2\) 。
否则枚举向量组的极大线性无关组大小 \(r(r\le k)\),问题转化为强制选 \(\bf x\) 的方案数。
显然,每个非 \(\bf 0\) 向量是本质相同的。答案就是 \(\dfrac{((k)_{r+1})_2}{2^k-1}\)。
还有 \(n-r\) 个作为被线性表出的。
考虑一开始会表出 \(1\) 个向量,第一个向量会使得 \(2\) 个向量被标出,第二个会有 \(4\) 个向量被表出……
一共就是 \([x^{n-r}](1+x+x^2+\dots)(1+2x+4x^2)\dots\)
就是
\]
对于所有 \(r\),\(O(k)\) 是可以解决的。
使用光速幂。略微卡常。
// Problem: October 18, 2017
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/CF1603F
// Memory Limit: 500 MB
// Time Limit: 4000 ms
// UOB Koala
//
// Powered by CP Editor (https://cpeditor.org)
#pragma GCC optimize("fast-math","unroll-loops","no-stack-protector")
#pragma GCC diagnostic error "-funsafe-loop-optimizations"
#pragma GCC diagnostic error "-fcse-skip-blocks"
#pragma GCC diagnostic error "-fwhole-program"
#pragma GCC diagnostic error "-std=c++14"
#pragma GCC target("sse3","sse2","sse")
#pragma GCC optimize("Ofast")
#pragma GCC optimize(2)
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e7+5,mod=998244353,B=40000,N=1e7;
int qp(int a,int b){
if(b==0)return 1;
int T=qp(a,b>>1);T=1ll*T*T%mod;
if(b&1)return 1ll*T*a%mod;
return T;
}
#define ll long long
int a[B+5],b[B+5];
int Pow(ll x){
x%=(mod-1);
return 1ll*a[x%B]*b[x/B]%mod;
}
int upw[maxn],fac[maxn],ifac[maxn];
int q2(ll n){
return Pow(n)-1;
}
int C(int n,int k){
if(k>n-k)k=n-k;
return 1ll*upw[k]*ifac[k]%mod;
}
int n,k,x,T;
int ask(int n,int k){
if(k>n)return 0;
return 1ll*Pow(1ll*k*(k-1)/2)*fac[n]%mod*ifac[n-k]%mod;
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
a[0]=1;
for(int i=1;i<=B;i++)a[i]=1ll*a[i-1]*2%mod;
b[0]=1;
for(int i=1;i<=B;i++)b[i]=1ll*b[i-1]*a[B]%mod;
fac[0]=1;
for(int i=1;i<=N;i++)fac[i]=1ll*fac[i-1]*q2(i)%mod;
ifac[N]=qp(fac[N],mod-2);
for(int i=N-1;i>=0;i--)ifac[i]=1ll*ifac[i+1]*q2(i+1)%mod;
cin>>T;
while(T--){
cin>>n>>k>>x;
if(x==0){
cout<<ask(k,n)<<"\n";
}else{
upw[0]=1;
n++;
for(int i=1;i<=min(n,k);i++)upw[i]=1ll*upw[i-1]*q2(n-i)%mod;
int ans=0;int A=qp(q2(k),mod-2);
for(int i=0;i<min(n,k);i++){
(ans+=1ll*ask(k,i+1)*C(n-1,i)%mod)%=mod;
}
ans=1ll*ans*A%mod;
cout<<ans<<"\n";
}
}
return 0;
}
q-analog 学习笔记(待整修)的更多相关文章
- angular $q的学习笔记转帖
http://blog.segmentfault.com/bornkiller/1190000000402555 angular $q的一个不错的学习笔记
- Hibernate 马士兵 学习笔记 (转)
目录(?)[+] 第2课 Hibernate UML图 第3课 风格 第4课 资源 第5课 环境准备 第6课 第一个示例Hibernate HelloWorld 第7课 建立Annotation版本的 ...
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
- Java学习笔记(04)
Java学习笔记(04) 如有不对或不足的地方,请给出建议,谢谢! 一.对象 面向对象的核心:找合适的对象做合适的事情 面向对象的编程思想:尽可能的用计算机语言来描述现实生活中的事物 面向对象:侧重于 ...
- Vue.js学习笔记(2)vue-router
vue中vue-router的使用:
- linux驱动开发之块设备学习笔记
我的博客主要用来存放我的学习笔记,如有侵权,请与我练习,我会立刻删除.学习参考:http://www.cnblogs.com/yuanfang/archive/2010/12/24/1916231.h ...
- MySQL4.0命令操作学习笔记
声明:下列内容并非原创,仅仅是最近学习笔记整理. -------------------------------------- 进入mysql安装路径bin目录下: 1.开启服务 winmysqlad ...
- Linux 学习笔记
Linux学习笔记 请切换web视图查看,表格比较大,方法:视图>>web板式视图 博客园不能粘贴图片吗 http://wenku.baidu.com/view/bda1c3067fd53 ...
- BZOJ 2120 数颜色&2453 维护队列 [带修改的莫队算法]【学习笔记】
2120: 数颜色 Time Limit: 6 Sec Memory Limit: 259 MBSubmit: 3665 Solved: 1422[Submit][Status][Discuss] ...
- BZOJ 1061: [Noi2008]志愿者招募 [单纯形法]【学习笔记】
1061: [Noi2008]志愿者招募 Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 3975 Solved: 2421[Submit][Stat ...
随机推荐
- 水位波纹动画兼容ie8
效果观看请到下方: 链接:https://pan.baidu.com/s/1AWHz0BHTmj_7Vx6qhSmuaA 提取码:ih9p 复制这段内容后打开百度网盘手机App,操作更方便哦 下面介绍 ...
- Git之常用文件
git项目中的特殊文件, 常见文件有.gitignore, .gitkeep 1) .gitkeep git默认是不允许提交一个空的目录到版本库上的, 可以在空的文件夹里面建立一个.gitkeep文件 ...
- Fiddler模拟网络超时
前情 最近在优化接口请求错误的报错提示,希望尽可能的能从提示语知道当前错误大致原因,于是我需要模拟各种错误请求的状况. 问题 网络超时是很常见的接口请求错误情况,在没有服务端配合的情况下,我需要怎样来 ...
- vba interpreter 结束
https://github.com/inshua/vba-interpreter 已覆盖几乎 VB 所有的特性,只是库还不够全. VB 语言自身较为落后,语法也有诸多设计不当.最严重的莫过于函数和数 ...
- 武装你的WEBAPI-OData使用Endpoint
本文属于 OData 系列文章 Introduction 更新: 由于新版的 OData 已经默认使用了 endpoint 模式(Microsoft.AspNetCore.OData 8.0.0),不 ...
- Argocd基于网络的终端
https://argo-cd.readthedocs.io/en/stable/operator-manual/web_based_terminal/ 官网参考: https://argo-cd ...
- CentOS7 安装git 配置秘钥公钥克隆代码
建议购买阿里云香港服务器可以免备案,系统镜像选择CentOS7测试 第一步:安装git客户端,默认安装在/usr/libexec/git-core目录 yum -y install git #查看版本 ...
- Qt开发经验小技巧161-165
经常有人说Qt垃圾,说用Qt在1毫秒绘制几千个数据点卡成屎.其实显示器最高刷新频率一般才60帧,1毫秒就绘制一次有意义吗?不仅显示器没刷新过来,人肉眼也看不过来(有人可能又要抬杠说这是老板要求的,显示 ...
- 即时通讯技术文集(第18期):IM架构设计基础知识合集 [共16篇]
为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第18 期. [- 1 -] IM系统的MQ消息中间件选型:Kafka还是RabbitMQ? [ ...
- Transformer总结
Contents Attention OverallSurvey NLP Language Speech CV Backbone_Classification Self-Supervised Inte ...