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

题解:回家

1. Description

现在有一个人离家 \(n\) 步,每一次有 \(\frac 12\) 的概率靠近家一步,有 \(\frac 12\) 的概率远离家一步,求最多走 \(k\) 步回家的概率。

2. Solution

写一下赛时的神秘做法。
首先不难想到一个简单 dp,定义 \(f_i\) 表示消耗了 \(i\) 点体力回家的方案数,那么答案就是 \(\sum_{i=n}^k \frac{f_i}{2^i}\)
现在考虑怎么求 \(f_i\),首先不难想到,消耗了 \(i\) 点体力回家,需要靠近家 \(\frac{i+n}{2}\) 步,方案数是 \(C_{i+n}^{\frac{i+n}{2}}\),但是会出现还没有消耗完体力提前到家的情况,消耗了 \(j\) 点体力到家,那么有 \(i-j\) 步多余,这 \(i-j\) 步中,有 \(\frac{i-j}{2}\) 步都是靠近家的,所以会重复算 \(C_{i-j}^{\frac{i-j}{2}}\) 次,因此 \(f_i=C_{i+n}^{\frac{i+n}{2}}-\sum_{j=n}^{i-1}f_jC_{i-j}^{\frac{i-j}{2}}\)。不难得到 \(O(n^2)\) 的 dp。
考虑如何优化,显然有 \(f_{n}=1,f_{n+2}=n\),然后我们考虑带入递推式就会发现一个很有意思的规律,\(f_{n+2k}=\frac{n\times (n+2k-1)!}{(n+k)!\times k!}\),这样可以 \(O(1)\) 计算。
实际上,\(f_{n+2k}=\frac{nC_{n+2k}^{k}}{n+2k}\),可以应用卡特兰数的相关知识求解。

3. Code

/*by ChenMuJiu*/
/*略去缺省源与快读快写*/
const int mod=998244353,N=5e6+5;
int n,k;
int fac[N],inv[N];
int add(int x,int y){x+=y;return x>=mod?x-mod:x;
}
int sub(int x,int y){x-=y;return x<0?x+mod:x;
}
int mul(int x,int y){long long res=1ll*x*y;return res>=mod?res%mod:res; 
}
int binpow(int a,int b){int res=1;while(b){if(b&1)res=mul(res,a);b>>=1;a=mul(a,a);}return res;
}
int C(int m,int n){return mul(fac[n],mul(inv[n-m],inv[m]));
}
signed main(){read(n),read(k);if(n>k){puts("0");exit(0);}fac[0]=1;for(int i=1;i<=k;i++)fac[i]=mul(fac[i-1],i);inv[k]=binpow(fac[k],mod-2);for(int i=k-1;i>=0;i--)inv[i]=mul(inv[i+1],i+1);int K=mul(inv[2],inv[2]);int ans=0;for(int i=n,las=n,M=n-1,pw=binpow(inv[2],n),res;i<=k;i+=2,M+=2,las++,pw=mul(pw,K)){res=mul(n,mul(fac[M],mul(inv[las],inv[(i-n)/2])));ans=add(ans,mul(res,pw));}write(ans),Nxt;
}
```## 1. Description
现在有一个人离家 $n$ 步,每一次有 $\frac 12$ 的概率靠近家一步,有 $\frac 12$ 的概率远离家一步,求最多走 $k$ 步回家的概率。  
## 2. Solution
写一下赛时的神秘做法。  
首先不难想到一个简单 dp,定义 $f_i$ 表示消耗了 $i$ 点体力回家的方案数,那么答案就是 $\sum_{i=n}^k \frac{f_i}{2^i}$。  
现在考虑怎么求 $f_i$,首先不难想到,消耗了 $i$ 点体力回家,需要靠近家 $\frac{i+n}{2}$ 步,方案数是 $C_{i+n}^{\frac{i+n}{2}}$,但是会出现还没有消耗完体力提前到家的情况,消耗了 $j$ 点体力到家,那么有 $i-j$ 步多余,这 $i-j$ 步中,有 $\frac{i-j}{2}$ 步都是靠近家的,所以会重复算 $C_{i-j}^{\frac{i-j}{2}}$ 次,因此 $f_i=C_{i+n}^{\frac{i+n}{2}}-\sum_{j=n}^{i-1}f_jC_{i-j}^{\frac{i-j}{2}}$。不难得到 $O(n^2)$ 的 dp。  
考虑如何优化,显然有 $f_{n}=1,f_{n+2}=n$,然后我们考虑带入递推式就会发现一个很有意思的规律,$f_{n+2k}=\frac{n\times (n+2k-1)!}{(n+k)!\times k!}$,这样可以 $O(1)$ 计算。  
实际上,$f_{n+2k}=\frac{nC_{n+2k}^{k}}{n+2k}$,可以应用卡特兰数的相关知识求解。  
## 3. Code
```c++
/*by ChenMuJiu*/
/*略去缺省源与快读快写*/
const int mod=998244353,N=5e6+5;
int n,k;
int fac[N],inv[N];
int add(int x,int y){x+=y;return x>=mod?x-mod:x;
}
int sub(int x,int y){x-=y;return x<0?x+mod:x;
}
int mul(int x,int y){long long res=1ll*x*y;return res>=mod?res%mod:res; 
}
int binpow(int a,int b){int res=1;while(b){if(b&1)res=mul(res,a);b>>=1;a=mul(a,a);}return res;
}
int C(int m,int n){return mul(fac[n],mul(inv[n-m],inv[m]));
}
signed main(){read(n),read(k);if(n>k){puts("0");exit(0);}fac[0]=1;for(int i=1;i<=k;i++)fac[i]=mul(fac[i-1],i);inv[k]=binpow(fac[k],mod-2);for(int i=k-1;i>=0;i--)inv[i]=mul(inv[i+1],i+1);int K=mul(inv[2],inv[2]);int ans=0;for(int i=n,las=n,M=n-1,pw=binpow(inv[2],n),res;i<=k;i+=2,M+=2,las++,pw=mul(pw,K)){res=mul(n,mul(fac[M],mul(inv[las],inv[(i-n)/2])));ans=add(ans,mul(res,pw));}write(ans),Nxt;
}
http://www.jsqmd.com/news/344773/

相关文章:

  • 2026年评价高的工业仪表显示屏,液晶模块显示屏厂家采购指南及推荐 - 品牌鉴赏师
  • 2026.02.05
  • Flutter for OpenHarmony 实战:打地鼠游戏难度设计与平衡性
  • 瑞祥商联卡线上回收流程详解:快速、安全、简单 - 团团收购物卡回收
  • 大模型应用的模型架构和核心技术原理-以DeepSeek对话助手为例分析
  • 2026年可靠的抗震储能屏,防水触摸屏,宽温储能屏厂家行业热门推荐 - 品牌鉴赏师
  • 如何通过Java SDK获取Collection
  • 2026年正规的常熟GEO排名/常熟GEO品牌人气推荐 - 品牌宣传支持者
  • HOS-MAKE: AI驱动的代码加密系统,为开发者打造“自私“的代码保护神
  • 2026年推荐张家港GEO建站/张家港GEO品牌客户好评推荐 - 品牌宣传支持者
  • 不容错过!低查重的AI教材生成工具,让AI写教材更简单
  • LVM动态扩容完全指南|小白也能上手,零停机扩展磁盘空间(5种方法)
  • 基于现代Web技术的Reddit视频下载方案实现与优化
  • 春节聚会蜜雪冰城6.9元起省钱攻略,美团APP最优惠 - AIDSO爱搜
  • 【必收藏】RAG系统全解析:从核心问题到高级解决方案,打造大模型应用利器
  • 维普资讯是什么
  • 2026年热门的全彩电子纸,电子纸屏幕厂家用户口碑推荐清单 - 品牌鉴赏师
  • 2026年正规的上海外贸网站/上海网站推广用户满意推荐 - 品牌宣传支持者
  • 2026年蜂窝板供应厂家厂家推荐:蜂窝板生产厂家/金刚岩蜂窝板/隐框蜂窝板/OPPR封边蜂窝板/蜂窝板公司/蜂窝板批发厂家/选择指南 - 优质品牌商家
  • 深入解析:贪心 - 后篇
  • 【收藏必看】程序员入门大模型:一文读懂Transformer背后的组合数学原理
  • 2026年正规的常熟定制网站/常熟做网站用户选择榜 - 品牌宣传支持者
  • (AI答复)云上生产环境的安全纵深与开发测试运维团队的技术纵深体系构建
  • 2026天津多口味粽子厂靠谱推荐,真材实料满足多样需求 - 工业品网
  • Unity基本工作原理
  • 智能垃圾桶(小车)(有完整资料)
  • 2026年多口味粽子精品定制费用多少,天津元不凡食品科技揭秘 - 工业推荐榜
  • 基于AI应用+数据可视化+SpringBoot的爱心物资捐赠系统设计与实现 大学生项目实战开发指导
  • 2026年正规的张家港制作网站/张家港做网站用户满意推荐 - 品牌宣传支持者
  • 温湿度控制系统(有完整资料)