联考题考这个不会就来学了

首先给出对其的定义。

对于一个对象 \(u\),构造关于 \(q\) 的某表达式 \(f(q)\),使得:

\[\lim_{q\to 1}f(q)=u
\]

然而这个可能没有很大用。真正 OI 有用的还是要实际一点。

定义与简单性质

\[[n]_q=\frac{1-q^n}{1-q},[n]_q!=\prod_{i=1}^n[i]_q\\ \binom{n}{m}_q=\frac{[n]_q!}{[m]_q![n-m]_q!}
\]

把 \(f(x)f(qx)f(q^2x)\dots f(q^{n-1}x)\) 记为 \(f^{(n;q)}(x)\),比如

\[(x+y)^{(n;q)}=(x+y)(x+qy)\dots(x+q^{n-1}y)
\]

从定义不难看出若干性质。

\[[a+b]_q=[a]_q+q^a[b_q],[ab]_q=[a]_q[b]_{q^a}\\
[-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
\]

由于

\[\Delta \binom{x}{k}_q=q^{x-k+1}\binom{x}{k-1}_q
\]

\[\sum q^{x}\binom{x}{k}_q\delta x=q^k\binom{x}{k+1}_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_{k\ge 0}\binom{m+k+1}{k}_qz^k=\sum_{k\ge 0}z^k\sum_{0\le l\le k}q^l\binom{m+l}{l}\\
=\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})
\]

同样,显然

\[\sum_{k\ge 0}\binom{k}{m}_qz^k=z^m(1-z)^{(m+1;q)}
\]

最后补两个:

q-三项式定理:

\[\binom{n}{k}_q\binom{k}{r}_q=\binom{n}{r}_q\binom{n-r}{k-r}_q
\]

这是很明显的。

q-范德蒙德卷积

\[\sum_k\binom{r}{k}_q\binom{s}{n-k}_qq^{(r-k)(n-k)}=\binom{r+s}{n}_q
\]

q-二项式系数的若干其他性质

q-二项式定理及代数证明

\[(x+y)^{(n;q)}=\sum_{k}\binom{n}{k}_qq^{\binom{k}{2}}x^{n-k}y^k
\]

证明:

显然只需考虑 \(x=1\)。

考察

\[(1+z)^{(n;y)}=F_y(z)=\prod_{i=0}^{n-1}(1+y^iz)\\
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}\) 即证。

又有

\[\frac{1}{1-y}^{(n,q)}=\sum_{i\ge 0}\binom{n+i-1}i_qy^i
\]

这个式子在计算排列逆序对数有应用。

不难发现和求出 \([n]_q!\) 的认为 \(q\) 是变量的生成函数前 \(m\) 项等价。(说法不太准确?)

就是需要快速球出 \((1-q)^{(n;q)}\)。

根据 q-二项式定理

\[(1-q)^{(n;q)}=\sum_k \binom nk _qq^{\frac{k(k+1)}{2}}
\]

利用

\[\binom nk_q=\binom{n}{k-1}_q\frac{1-q^{n-k+1}}{1-q^k}
\]

转移即可。

发现只需递推至 \(\sqrt{m}\) 项。复杂度 \(O(m\sqrt m)\)。常数极小。

注意到 \(\exp\) 也可以求这个,但是。。\(\exp\) 常熟实在是太大了。

q-Lucas 定理及代数证明

令 \(a=\delta_q(p)\) ,即 \(\min(\{a|q^a\equiv 1\pmod p\})\)。

Lemma:

\[\forall k\in(0,a),\binom{a}{k}_q\equiv0\pmod p
\]

证明:注意到 \([a]_q!=0\)。

推论:

\[(1+z)^{(a;q)}\equiv 1+z^a\pmod p
\]

证明:

\[(1+z)^{(a;q)}=\sum_k\binom{a}{k}_qq^{\binom{k}{2}}z^k
\]

唯一有贡献的是 \(k=0\) 和 \(k=a\),为 \(1\),即证。

q-Lucas Theorem:

\[q^{\binom{m}{2}}\binom{n}{m}_q\equiv\binom{\lfloor n/a\rfloor}{\lfloor m/a\rfloor}q^{\binom{m\bmod a}{2}}\binom{n\bmod a}{m\bmod a}_q\pmod p
\]

证明:

\[q^{\binom{m}{2}}\binom{n}{m}_q=[z^m](1+z)^{(n;q)}\\
\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-二项式系数为整数

这里先给个分圆多项式定义:

\[\zeta_d=\cos \frac{2\pi d}{n}+i\sin\frac{2\pi d}{n},\gcd(d,n)=1(\iff ord(\zeta_d)=n)\\
\Phi_n(x)=\prod_{(d,n)=1,d\le n}(x-\zeta_d)\\
\]

为了刻画整数 q-模拟,有:

\[\prod_{d|n} \Phi_d(x)=x^n-1\\
\]

证明:

\[RHS=(x-\zeta_1)(x-\zeta_1^2)\dots(x-\zeta_1^n)\\
\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:两个本原多项式的乘积仍然是本原多项式。本原多项式的定义是系数最大公约数为一的多项式。

有:(即分圆多项式系数是整数)

\[\forall n\in\mathbb{N}^+,\Phi_n(x)\in\mathbb{Z}[x]
\]

证明:

\(n=1\) 时为 \(x-1\),成立。

归纳,

\[x^n-1=\Phi_n(x)\prod_{d|n,d<n} \Phi_d(x)\\
\]

根据归纳假设, \(\Phi_d(x)\) 为本原多项式,故

\[\prod_{d|n,d<n} \Phi_d(x)
\]

为本原多项式。

这个和左项都是首一本原多项式,即证。

那么我们可以证明了!

\[[n]_q=\prod_{d|n,d>1}\Phi_d(q)\\
[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\) 勒让德定理)地完成了证明。

若干组合性质

\[\sum_{p\in P[n]}q^{\tau(p)}=[n]_q!
\]

证明:

设 \(f_i=\operatorname{card}(\{j\mid j<i\ \land \ p_j>p_i\})\),容易发现 \(f\) 和 \(p\) 构成双射。

注意到

\[[i]_q=\frac{q^i-1}{q-1}=\sum_{j=0}^{i-1}q^j
\]

那么 \([i]_q=\sum q^{f_i}\),从而原式是显然的。

\[\sum_{p\in S}q^{\operatorname{maj}(p)}=\sum_{p\in S}q^{\tau(p)}=\binom{\sum a_i}{a_1,a_2,\dots,a_n}_q
\]

其中 \(S\) 是 \(a_i\) 个 \(i\) 元素(对于所有 \(i\))构成的排列集合。

\[\operatorname{maj}(p)=\sum_{i<\sum a_i}i[p_i>p_{i+1}]
\]

我的另一篇博客 证明了前一个等号。(后面这个等号是 trival 的)

求 \(\mathbb{F}_q^n\)(在模 \(q\) 意义下的 \(n\) 维整数空间)大小为 \(k\) 的线性无关向量组个数。\(q\) 为质数。

不难发现第一次可以选 \(q^n-1\)(不能选 \(\bf{0}\)),第二次 \(q^n-q\)(第一个会 ban 掉 \(q\) 个),如此下去。

记有 \(((n)_k)_q\) 个 ,那么

\[((n)_k)_q=q^{\binom k 2}\prod_{i=n-k+1}^n (q^i-1)=\frac{(q-1)^kq^{\binom k 2}[n]_q!}{[n-k]_q!}
\]

不难验证,

\[\binom nk_q=\frac{((n)_k)_q}{((k)_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\)

就是

\[[x^{n-r}]\frac{1}{1-x}^{(r;2)}=\binom n r_2
\]

对于所有 \(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 学习笔记(待整修)的更多相关文章

  1. angular $q的学习笔记转帖

    http://blog.segmentfault.com/bornkiller/1190000000402555 angular $q的一个不错的学习笔记

  2. Hibernate 马士兵 学习笔记 (转)

    目录(?)[+] 第2课 Hibernate UML图 第3课 风格 第4课 资源 第5课 环境准备 第6课 第一个示例Hibernate HelloWorld 第7课 建立Annotation版本的 ...

  3. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  4. Java学习笔记(04)

    Java学习笔记(04) 如有不对或不足的地方,请给出建议,谢谢! 一.对象 面向对象的核心:找合适的对象做合适的事情 面向对象的编程思想:尽可能的用计算机语言来描述现实生活中的事物 面向对象:侧重于 ...

  5. Vue.js学习笔记(2)vue-router

    vue中vue-router的使用:

  6. linux驱动开发之块设备学习笔记

    我的博客主要用来存放我的学习笔记,如有侵权,请与我练习,我会立刻删除.学习参考:http://www.cnblogs.com/yuanfang/archive/2010/12/24/1916231.h ...

  7. MySQL4.0命令操作学习笔记

    声明:下列内容并非原创,仅仅是最近学习笔记整理. -------------------------------------- 进入mysql安装路径bin目录下: 1.开启服务 winmysqlad ...

  8. Linux 学习笔记

    Linux学习笔记 请切换web视图查看,表格比较大,方法:视图>>web板式视图 博客园不能粘贴图片吗 http://wenku.baidu.com/view/bda1c3067fd53 ...

  9. BZOJ 2120 数颜色&2453 维护队列 [带修改的莫队算法]【学习笔记】

    2120: 数颜色 Time Limit: 6 Sec  Memory Limit: 259 MBSubmit: 3665  Solved: 1422[Submit][Status][Discuss] ...

  10. BZOJ 1061: [Noi2008]志愿者招募 [单纯形法]【学习笔记】

    1061: [Noi2008]志愿者招募 Time Limit: 20 Sec  Memory Limit: 162 MBSubmit: 3975  Solved: 2421[Submit][Stat ...

随机推荐

  1. 水位波纹动画兼容ie8

    效果观看请到下方: 链接:https://pan.baidu.com/s/1AWHz0BHTmj_7Vx6qhSmuaA 提取码:ih9p 复制这段内容后打开百度网盘手机App,操作更方便哦 下面介绍 ...

  2. Git之常用文件

    git项目中的特殊文件, 常见文件有.gitignore, .gitkeep 1) .gitkeep git默认是不允许提交一个空的目录到版本库上的, 可以在空的文件夹里面建立一个.gitkeep文件 ...

  3. Fiddler模拟网络超时

    前情 最近在优化接口请求错误的报错提示,希望尽可能的能从提示语知道当前错误大致原因,于是我需要模拟各种错误请求的状况. 问题 网络超时是很常见的接口请求错误情况,在没有服务端配合的情况下,我需要怎样来 ...

  4. vba interpreter 结束

    https://github.com/inshua/vba-interpreter 已覆盖几乎 VB 所有的特性,只是库还不够全. VB 语言自身较为落后,语法也有诸多设计不当.最严重的莫过于函数和数 ...

  5. 武装你的WEBAPI-OData使用Endpoint

    本文属于 OData 系列文章 Introduction 更新: 由于新版的 OData 已经默认使用了 endpoint 模式(Microsoft.AspNetCore.OData 8.0.0),不 ...

  6. Argocd基于网络的终端

    https://argo-cd.readthedocs.io/en/stable/operator-manual/web_based_terminal/ 官网参考:​ ​https://argo-cd ...

  7. CentOS7 安装git 配置秘钥公钥克隆代码

    建议购买阿里云香港服务器可以免备案,系统镜像选择CentOS7测试 第一步:安装git客户端,默认安装在/usr/libexec/git-core目录 yum -y install git #查看版本 ...

  8. Qt开发经验小技巧161-165

    经常有人说Qt垃圾,说用Qt在1毫秒绘制几千个数据点卡成屎.其实显示器最高刷新频率一般才60帧,1毫秒就绘制一次有意义吗?不仅显示器没刷新过来,人肉眼也看不过来(有人可能又要抬杠说这是老板要求的,显示 ...

  9. 即时通讯技术文集(第18期):IM架构设计基础知识合集 [共16篇]

    为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第18 期. [- 1 -] IM系统的MQ消息中间件选型:Kafka还是RabbitMQ? [ ...

  10. Transformer总结

    Contents Attention OverallSurvey NLP Language Speech CV Backbone_Classification Self-Supervised Inte ...