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 ...
随机推荐
- JVM性能优化, Part 5:Java的伸缩性
本文由 ImportNew - ImportNew读者 翻译自 Javaworld.如需转载本文,请先参见文章末尾处的转载要求. ImportNew注: JVM性能优化系列文章前4篇由ImportNe ...
- FreeRTOS-Error: ..\FreeRTOS\portable\RVDS\ARM_CM4F\port.c, 271
任务运行时间API函数的应用 当使用任务运行时间API函数打印任务运行时间等相关信息是,串口打印出现这个问题 网上是这么说的 但是运行每个任务都可以执行进去,循序时间API函数也可以执行进去,就是无法 ...
- C#获取用户客户端系统版本设备名称浏览器
C#获取用户客户端系统版本设备名称浏览器 先看效果 使用 Neget引用包UAParser 在这里插入代码片 项目的github :https://github.com/ua-parser/uap-c ...
- CentOS7.8安装k8s
1, 安装 docker / kubelet # 在 master 节点和 worker 节点都要执行 \# 最后一个参数 1.20.6 用于指定 kubenetes 版本,支持所有 1.20.x 版 ...
- 使用 MOLECULE 迅速包装百度 UEditor
UEditor: UEditor - 首页http://ueditor.baidu.com/website/ 我们在对话框上放了几个 UEditor,发现第一次弹出对话框时UEditor还没有初始化 ...
- Jackson ObjectMapper - 指定对象属性的序列化顺序
注释很有用,但在任何地方应用起来都会很痛苦.您可以配置整个 ObjectMapper 以这种方式工作 当前杰克逊版本: objectMapper.configure(MapperFeature.SOR ...
- 如何安装和使用 Latte Dock
你知道什么是"停靠区Dock" 吧,它通常是你的应用程序"停靠"的底栏,以便快速访问. 许多发行版和桌面环境都提供了某种停靠实现.如果你的发行版没有" ...
- 问题解决:Failed to download metadata for repo ‘appstream‘: Cannot prepare internal mirrorlist
https://cloud.tencent.com/developer/article/1993317 大家都知道Centos8于2021年年底停止了服务,大家再在使用yum源安装时候,出现下面错误& ...
- conda虚拟环境中设置环境变量
引言 使用conda创建虚拟环境就是为了方便管理,各个环境之间的模块是独立的.有时候我们在做项目的时候需要设置一下环境变量才方便实用,但是不想影响到其他的虚拟环境,因此不能再系统的环境变量里面设置. ...
- 关于Jetson nano (B02)如何部署Yolov8以及一些必要的知识点
一.前言 记录一个简单的安装和部署过程,尽管笔者也是按照教程来的,但奈何参考了很多教程,虽然写的都非常好,但是却很散,因此笔者这里想把这些教程的精华提炼出来,汇总并且写在正文处.还是老规矩,笔者也在学 ...