CF1737E Ela Goes Hiking
创始人
2025-05-31 09:48:21

CF1737E Ela Goes Hiking

题目大意

nnn 只蚂蚁站成一排,第 111 只蚂蚁左边和第 nnn只蚂蚁右边各有一个挡板,相邻两只蚂蚁的距离、第 111 只蚂蚁与左边挡板的距离和第 nnn 只蚂蚁与右侧挡板的距离相等。初始时每只蚂蚁重量相等,每只蚂蚁有 12\frac{1}{2}21​ 概率向左运动,12\frac{1}{2}21​ 概率向右运动,每只蚂蚁速度相同。中途蚂蚁不可主动改变方向,如果碰到挡板则向相反方向运动,若两只蚂蚁相遇,重量大的蚂蚁会把重量小的蚂蚁吃掉,重量变为两者之和,如果重量相同,向左运动的蚂蚁会吃掉向右运动的蚂蚁。求对于所有 1≤i≤n1\leq i\leq n1≤i≤n,第 iii 只蚂蚁成为最终的存活者的概率对 109+710^9+7109+7 取模。


题解

我们可以发现,每只初始向左的蚂蚁一定会吃掉它左边连续的向右边的蚂蚁。对于最右边的蚂蚁,它无论向那个方向,都会转到向左,我们可以认为它一定向左。

把所有初始向左的蚂蚁吃完后,现在还剩几只大蚂蚁。第一只先跟第二只决斗,然后胜者跟第三只决斗,以此类推。两只蚂蚁决斗,如果重量不同,则重量大的蚂蚁获胜,否则在右边的蚂蚁获胜。

第iii只蚂蚁要获胜,首先它要向右吃掉所有编号比它小的蚂蚁。然后与编号比它大的蚂蚁决斗时,必须是它胜利。我们分成两步来做。

首先,它要吃掉所有编号小于它的蚂蚁。设iii之前第一只向左走的蚂蚁为jjj,则无论111到jjj中哪只蚂蚁获胜,都会变成一只体重为jjj的蚂蚁,而此时iii的重量为j−ij-ij−i,也就是要满足j≤i−jj\leq i-jj≤i−j,即j≤⌊i2⌋j\leq \lfloor\dfrac{i}{2}\rfloorj≤⌊2i​⌋。那么编号为111到⌊i2⌋\lfloor\dfrac{i}{2}\rfloor⌊2i​⌋的蚂蚁可以任意选,而编号为⌊i2⌋\lfloor\dfrac{i}{2}\rfloor⌊2i​⌋到i−1i-1i−1的蚂蚁必须向右走,并被蚂蚁iii吃掉。那么左边的方案数为2⌊i2⌋2^{\lfloor\frac i2\rfloor}2⌊2i​⌋。

然后考虑右边的情况。设iii之后第一个只向右走的蚂蚁为jjj,则显然要满足i

fi=∑j=i+12i−1fjf_i=\sum\limits_{j=i+1}^{2i-1}f_jfi​=j=i+1∑2i−1​fj​

可以用前缀和优化DP。

那么位置iii的蚂蚁最终能获胜的概率为2⌊i2⌋×fi2n−1\dfrac{2^{\lfloor\frac i2\rfloor}\times f_i}{2^{n-1}}2n−12⌊2i​⌋×fi​​(因为第nnn只蚂蚁一定向左,所以不用考虑它,总方案数为2n−12^{n-1}2n−1)。

时间复杂度为O(∑n)O(\sum n)O(∑n)。

code

#include
using namespace std;
const int N=1000000;
int T,n;
long long ans,ny2=500000004,w[1000005],ny[1000005],f[1000005],s[1000005];
long long mod=1000000007;
int main()
{w[0]=ny[0]=1;for(int i=1;i<=N;i++){w[i]=w[i-1]*2%mod;ny[i]=ny[i-1]*ny2%mod;}scanf("%d",&T);while(T--){scanf("%d",&n);f[n]=s[n]=1;s[n+1]=0;for(int i=n-1;i>=1;i--){f[i]=(s[i+1]-s[min(2*i,n+1)]+mod)%mod;s[i]=(s[i+1]+f[i])%mod;}for(int i=1;i<=n;i++){ans=w[i/2]*f[i]%mod*ny[n-1]%mod;printf("%lld\n",ans);}}return 0;
}

相关内容

热门资讯

labview数据类型转换字符... wx供重浩:创享日记 对话框发送:labview转换 获取完整无水印报告...
【分享】国内如何使用chatG... 上周,OpenAI宣布正式发布多模态预训练大模型GPT-4,其强大的能力...
软件智能:aaas系统中AI的... 概要(内容概述) <同一>将设计目标确定为“软件智能”的aaas中,AI的任务和AI能...
早日康复祝福语简短8字,早日康... 早日康复祝福语简短8字目录早日康复祝福语简短8字早日康复祝福语简短8字搞定手术祝福语8个字早日康复祝...
淘宝店铺名怎么改,淘宝店铺怎么... 淘宝店铺名怎么改目录淘宝店铺名怎么改淘宝店铺怎么改名淘宝店铺名可以修改吗,怎样修改怎么修改淘宝店铺名...
微信助手怎么查单删 极速百科网... 微信助手怎么查单删目录微信助手怎么查单删微信助手怎么查单删微信如何查单删 2016微信如何知道对方有...
陆家嘴都有什么旅游景点 极速百... 陆家嘴都有什么旅游景点目录陆家嘴都有什么旅游景点陆家嘴都有什么旅游景点陆家嘴有哪些旅游景点上海陆家嘴...
1229 - 拦截导弹的系统数... 1229 - 拦截导弹的系统数量求解 题目描述 某国为了防御敌国的导弹袭击,发展出一种...
如何做好项目缺陷管理 缺陷管理是项目管理工作中的重要环节。Excel表格是国内团队常用的缺陷管理工具,具备上...
Python生成器 1.生成器 生成器是一种特殊的迭代器,它是通过函数来实现的。生成器函数每次执行到yi...
Nginx可视化管理工具 - ... 一、介绍 nginx-proxy-manager 是一个反向代理管理系统,它基于Nginx,具有漂亮...
如何解除迅雷安全模式,迅雷怎样... 如何解除迅雷安全模式目录如何解除迅雷安全模式迅雷怎样解除安全模式迅雷VIP尊享版怎么解除安全模式?迅...
感谢朋友圈留言句子,适合发朋友... 感谢朋友圈留言句子目录感谢朋友圈留言句子适合发朋友圈表达感谢的句子20句发朋友圈的感谢短语有哪些?有...
关于韩娱的小说有没有什么好看的... 关于韩娱的小说有没有什么好看的目录关于韩娱的小说有没有什么好看的求好看的韩娱小说有没有好看的韩娱小说...
什么是表面粗糙度(什么是表面粗... 本篇文章极速百科给大家谈谈什么是表面粗糙度,以及什么是表面粗糙度?它对零件的使用性能有什么影响?对应...
永远用英语怎么说,“永远”除了... 永远用英语怎么说目录永远用英语怎么说“永远”除了“forever”的英文翻译~~还有哪些
少年音怎么练,怎么配出清爽的少... 少年音怎么练目录少年音怎么练怎么配出清爽的少年音?怎么学正太音少年音,像是龙马啊、镜音连啊不二啊那种...
情侣之间的爱称有哪些,情侣称呼... 情侣之间的爱称有哪些目录情侣之间的爱称有哪些情侣称呼有创意的爱称情侣之间好听的称呼都有什么?情侣爱称...
共享汽车怎么租车 极速百科网 ... 共享汽车怎么租车目录共享汽车怎么租车共享汽车怎么租车gofun出行有人开吗?使用方法是什么?共享汽车...
Python应用之爬虫基础:r... 引言 在生活中,大家都使用过浏览器,通过输入要搜索的内容以及鼠标点击等操...
jsp医疗辅助诊断管理系统se... 一、源码特点      JSP医疗辅助诊断管理系统是一套完善的java web信息管理系统ÿ...
db19密钥库和加密 创建密钥库ENCRYPTION_WALLET_LOCATION =(SOURCE =...
开局之年是什么意思(开局之年之... 本篇文章极速百科给大家谈谈开局之年是什么意思,以及开局之年之后是什么年对应的知识点,希望对各位有所帮...
抖音gga什么意思(抖音gg是... 本篇文章极速百科给大家谈谈抖音gga什么意思,以及抖音gg是什么意思对应的知识点,希望对各位有所帮助...
DMZ是什么(防火墙的dmz是... 今天给各位分享DMZ是什么的知识,其中也会对防火墙的dmz是什么进行解释,如果能碰巧解决你现在面临的...
风行SX6Sx6后视镜加热打不... 本篇文章极速百科给大家谈谈风行SX6Sx6后视镜加热打不开,以及东风风行sx6反光镜多少钱对应的知识...
CKA-17 Check Da... 文章目录Issue summary:Useful comment:1. 创建场景1.1...
elasticsearch的入... 目录一.数据聚合1.聚合的种类2.DSL实现聚合2.1.Bucket聚合语法2.2.聚合结果排序2....
成都男子误入停车场51秒收费8... 本篇文章极速百科给大家谈谈成都男子误入停车场51秒收费8元,属于乱收费吗,以及成都停车费贵对应的知识...
城市的路灯系统是如何控制开灯和... 本篇文章极速百科给大家谈谈城市的路灯系统是如何控制开灯和熄灯时间的?,以及路灯咋调制,路灯的时控开关...