当前位置: 首页 > news >正文

P7481 梦现时刻

题意

\(f(a,b)=\sum_{i=0}^b\binom{b}{i}\binom{n-i}{a}\),对所有 \(1\le a,b\le m\) 求出 \(f(a,b)\) 的异或和。

\(n\le 10^9,m\le \min(n,5000)\)

分析

显然异或没有任何性质,你需要求出所有 \(f(a,b)\)。发现这个东西本身也很难求,考虑递推:

\[f(a,b)=\sum_{i=0}^b \left[\binom{b-1}{i}+\binom{b-1}{i-1}\right]\binom{n-i}{a}=\sum_{i=0}^b \binom{b-1}{i}\binom{n-i}{a}+\sum_{i=0}^b\binom{b-1}{i-1}\binom{n-i}{a}=f(a,b-1)+\sum_{i=0}^b\binom{b-1}{i-1}\binom{n-i}{a} \]

考虑将后一部分进一步拆分:

\[\sum_{i=0}^b\binom{b-1}{i-1}\binom{n-i}{a}=\sum_{i=0}^b\binom{b-1}{i-1}\left[\binom{n-i+1}{a+1}-\binom{n-i}{a+1}\right]=\sum_{i=0}^{b-1}\binom{b-1}{i}\binom{n-i}{a+1}-\sum_{i=0}^{b-1}\binom{b-1}{i}\binom{n-i-1}{a+1}=f(a+1,b-1)-\sum_{i=0}^b\binom{b-1}{i}\binom{n-i-1}{a+1} \]

\(g(a,b)=\sum_{i=0}^b\binom{b}{i}\binom{n-i-1}{a}\),那么最终 \(f\) 有递推式

\[f(a,b)=f(a,b-1)+f(a+1,b-1)-g(a+1,b-1) \]

注意到:

\[f(a,b)=\sum_{i=0}^b\binom{b}{i}\binom{n-i}{a}=\sum_{i=0}^b\binom{b}{i}\binom{n-i-1}{a}+\sum_{i=0}^b\binom{b}{i}\binom{n-i-1}{a-1}=g(a,b)+g(a-1,b) \]

虽然此时已经能通过递推求解 \(f,g\) 了,但是我们可以将递推式化成只与 \(f\) 有关的形式:

\[f(a,b)+f(a+1,b) \]

\[=f(a,b-1)+f(a+1,b-1)+f(a+1,b-1)+f(a+2,b-1)-g(a+1,b-1)-g(a+2,b-1) \]

\[=f(a,b-1)+f(a+1,b-1)+f(a+1,b-1)+f(a+2,b-1)-f(a+2,b-1) \]

\[=f(a,b-1)+2f(a+1,b-1) \]

最终得到:

\[f(a,b)=f(a,b-1)+2f(a+1,b-1)-f(a+1,b) \]

直接递推,复杂度 \(O(n^2)\)。边界预处理的复杂度也是容易做到 \(O(n^2)\) 的。

int n,m;
int f[maxn][maxn];
int inv[maxn];
int Combine(int x,int y){if(x<y)return 0;int res=1;rep(i,x-y+1,x)res=res*i%mod;rep(i,1,y)res=res*inv[i]%mod;return res;
}
int D[maxn];
int C[maxn][maxn];
inline void solve_the_problem(){n=rd(),m=rd();inv[1]=1;rep(i,2,m)inv[i]=inv[mod%i]*(mod-mod/i)%mod;rep(i,0,m)D[i]=Combine(n-i,m);C[0][0]=1;rep(i,1,m){C[i][0]=1;rep(j,1,m)C[i][j]=(C[i-1][j]+C[i-1][j-1])%mod;}rep(b,0,m)rep(i,0,b)adder(f[m][b],C[b][i]*D[i]%mod);rep(a,0,m)f[a][0]=Combine(n,a);per(a,m-1,1)rep(b,1,m)f[a][b]=(f[a][b-1]+2*f[a+1][b-1]-f[a+1][b]+mod)%mod;int ans=0;rep(i,1,m)rep(j,1,m)ans^=f[i][j];write(ans);
}
http://www.sczhlp.com/news/3775/

相关文章:

  • C# Avalonia 07 - Mdi
  • 20250802-37
  • 【ADO.NET】构建数据库连接
  • 基于Java+Springboot+Vue开发的医院门诊预约挂号系统源码+运行步骤
  • 【学习笔记】进阶算法——最近公共祖先 LCA
  • LangChain框架入门04:10分钟优雅接入主流大模型
  • VSCode——插件分享:Markdown PDF - 实践
  • P4241 采摘毒瘤
  • CH572串口中断接收数据
  • 在Docker中,网络模式有哪些?
  • 在Docker中,镜像内没有curl,kill,ipconfig等指令如何添加?
  • 在Docker中,docker run指令执行后,生成了哪些进程?
  • 向量空间
  • 在Docker中,docker add copy有什么区别?
  • 在Docker中,docker run cmd entrypoint 有什么区别?
  • c++类
  • SonarQube Server 2025 Release 4 发布,新增功能概览
  • 实用指南:公司战略规划必备!深度解析“五看三定”方法论
  • 8.2
  • 短视频开源源码,优化加载速度提升用户体验 - 云豹科技
  • day11
  • 直播短视频系统,利用多核/多进程能力优化加载 - 云豹科技
  • MySQL 23 MySQL是怎么保证数据不丢的?
  • AABB包围盒
  • 视频:Python对多行业板块股票数据LSTM多任务学习预测:SMA、RSI及K-means聚类实现涨跌趋势与价格联合预测-
  • Java编程提示词
  • 专题:2025半导体行业研究报告:从AI芯片到封测突围的生死局|附40+份报告PDF、数据汇总下载
  • EEG-CLIP:通过自然语言描述学习脑电图表征
  • 大模型开发提示词
  • 一文读懂GDDR7,与DDR、GDDR、GDDR6、HBM3、LPDDR5有啥区别