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

首先给出对其的定义。

对于一个对象 \(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. JVM性能优化, Part 5:Java的伸缩性

    本文由 ImportNew - ImportNew读者 翻译自 Javaworld.如需转载本文,请先参见文章末尾处的转载要求. ImportNew注: JVM性能优化系列文章前4篇由ImportNe ...

  2. FreeRTOS-Error: ..\FreeRTOS\portable\RVDS\ARM_CM4F\port.c, 271

    任务运行时间API函数的应用 当使用任务运行时间API函数打印任务运行时间等相关信息是,串口打印出现这个问题 网上是这么说的 但是运行每个任务都可以执行进去,循序时间API函数也可以执行进去,就是无法 ...

  3. C#获取用户客户端系统版本设备名称浏览器

    C#获取用户客户端系统版本设备名称浏览器 先看效果 使用 Neget引用包UAParser 在这里插入代码片 项目的github :https://github.com/ua-parser/uap-c ...

  4. CentOS7.8安装k8s

    1, 安装 docker / kubelet # 在 master 节点和 worker 节点都要执行 \# 最后一个参数 1.20.6 用于指定 kubenetes 版本,支持所有 1.20.x 版 ...

  5. 使用 MOLECULE 迅速包装百度 UEditor

    UEditor: UEditor - 首页http://ueditor.baidu.com/website/ 我们在对话框上放了几个 UEditor,发现第一次弹出对话框时UEditor还没有初始化 ...

  6. Jackson ObjectMapper - 指定对象属性的序列化顺序

    注释很有用,但在任何地方应用起来都会很痛苦.您可以配置整个 ObjectMapper 以这种方式工作 当前杰克逊版本: objectMapper.configure(MapperFeature.SOR ...

  7. 如何安装和使用 Latte Dock

    你知道什么是"停靠区Dock" 吧,它通常是你的应用程序"停靠"的底栏,以便快速访问. 许多发行版和桌面环境都提供了某种停靠实现.如果你的发行版没有" ...

  8. 问题解决:Failed to download metadata for repo ‘appstream‘: Cannot prepare internal mirrorlist

    https://cloud.tencent.com/developer/article/1993317 大家都知道Centos8于2021年年底停止了服务,大家再在使用yum源安装时候,出现下面错误& ...

  9. conda虚拟环境中设置环境变量

    引言 使用conda创建虚拟环境就是为了方便管理,各个环境之间的模块是独立的.有时候我们在做项目的时候需要设置一下环境变量才方便实用,但是不想影响到其他的虚拟环境,因此不能再系统的环境变量里面设置. ...

  10. 关于Jetson nano (B02)如何部署Yolov8以及一些必要的知识点

    一.前言 记录一个简单的安装和部署过程,尽管笔者也是按照教程来的,但奈何参考了很多教程,虽然写的都非常好,但是却很散,因此笔者这里想把这些教程的精华提炼出来,汇总并且写在正文处.还是老规矩,笔者也在学 ...