2021牛客OI赛前集训营-提高组(第三场)T2交替
创始人
2024-05-31 03:25:17
0

2021牛客OI赛前集训营-提高组(第三场)

题目大意

一个长度为nnn的数组aaa,每秒都会变成一个长度为n−1n-1n−1的新数组a′a'a′,其变化规则如下

  • 如果当前数组aaa的大小nnn为偶数,则对于新数组a′a'a′的每一个位置i(1≤i
  • 如果当前数组aaa的大小nnn为奇数,则对于新数组a′a'a′的每一个位置i(1≤i

最终数组经过n−1n-1n−1秒后变为一个数字,求这个数字对109+710^9+7109+7取模后的结果。


题解

通过打表可以发现,当nnn为偶数时,aia_iai​对答案的贡献为(−1)t×Cn/2−1t(-1)^t\times C_{n/2-1}^{t}(−1)t×Cn/2−1t​,其中t=⌊i−12⌋t=\lfloor\dfrac{i-1}{2}\rfloort=⌊2i−1​⌋。

如果nnn为偶数,则直接用上面的规律来求即可。如果nnn为奇数,那么操作一次,将nnn变为偶数,再用上面的规律来求即可。

当然,考场上可以直接用打表发现的规律,但学习要严谨,所以下面给出证明。

用多项式a1x+a2x2+⋯+anxna_1x+a_2x^2+\cdots+a_nx^na1​x+a2​x2+⋯+an​xn表示当前的状态,用xix^ixi的系数表示当前第iii个位置的值。

  • 对于长度为偶数变为奇数的操作,相当于原来的多项式乘上(1+1x)(1+\dfrac 1x)(1+x1​)
  • 对于长度为奇数变为偶数的操作,相当于原来的多项式乘上(1−1x)(1-\dfrac 1x)(1−x1​)

那么nnn每减去2,则多项式乘上(1−1x2)(1-\dfrac{1}{x^2})(1−x21​)。

对于偶数的nnn,多项式要乘上(1−1x2)n/2−1(1+1x)=(1−Cn/2−111x2+Cn/2−121x4−⋯)(1+1x)(1-\dfrac{1}{x^2})^{n/2-1}(1+\dfrac 1x)=(1-C_{n/2-1}^1\dfrac{1}{x^2}+C_{n/2-1}^2\dfrac{1}{x^4}-\cdots)(1+\dfrac 1x)(1−x21​)n/2−1(1+x1​)=(1−Cn/2−11​x21​+Cn/2−12​x41​−⋯)(1+x1​)。最后的答案就是xxx的系数。

我们考虑如何求xxx的系数。对于最初多项式中的xix^ixi,

  • 如果iii是奇数,则xix_ixi​可以和(−1)tCn/2−1t1xi−1(-1)^tC_{n/2-1}^{t}\dfrac{1}{x^{i-1}}(−1)tCn/2−1t​xi−11​相乘来得到xxx的项
  • 如果iii是偶数,则xix_ixi​可以和(−1)tCn/2−1t1xi−2×1x(-1)^tC_{n/2-1}^{t}\dfrac{1}{x^{i-2}}\times \dfrac 1x(−1)tCn/2−1t​xi−21​×x1​相乘来得到xxx的项

其中t=⌊i−12⌋t=\lfloor\dfrac{i-1}{2}\rfloort=⌊2i−1​⌋。

那么就可以得到开头的结论。

时间复杂度为O(n)O(n)O(n)。

code

#include
using namespace std;
int n;
long long ans=0,a[100005],jc[100005],ny[100005];
long long mod=1000000007;
long long mi(long long t,long long v){if(!v) return 1;long long re=mi(t,v/2);re=re*re%mod;if(v&1) re=re*t%mod;return re;
}
long long C(int x,int y){return jc[x]*ny[y]%mod*ny[x-y]%mod;
}
int main()
{scanf("%d",&n);jc[0]=1;for(int i=1;i<=n;i++) jc[i]=jc[i-1]*i%mod;ny[n]=mi(jc[n],mod-2);for(int i=n-1;i>=0;i--) ny[i]=ny[i+1]*(i+1)%mod;for(int i=1;i<=n;i++){scanf("%lld",&a[i]);}if(n==1){printf("%d",(a[1]%mod+mod)%mod);return 0;}if(n%2==1){--n;for(int i=1;i<=n;i++){a[i]=(a[i]-a[i+1]+mod)%mod;}}for(int i=1;i<=n;i++){int x=(n-1)/2,y=(i-1)/2;if(y&1) ans=(ans-C(x,y)*a[i]%mod+mod)%mod;else ans=(ans+C(x,y)*a[i]%mod+mod)%mod;}printf("%lld",ans);return 0;
}

相关内容

热门资讯

小仓鼠在笼子里一动不动的是怎么... 小仓鼠在笼子里一动不动的是怎么回事?小仓鼠应该是生病了,建议尽快处理,找兽医看看,他们最专业。目前应...
扬州何园的寻访感受 扬州何园的寻访感受 你好,请参考: 初见何园,似乎有种似曾相识的感觉,或许意识到这种想...
童年傻事作文---速来 童年傻事作文---速来童年傻事 童年是多么美好,童年的生活令人向往,童年的天空总是那么蓝,而童...
家庭幽默大赛老韩头一家幽默服装... 家庭幽默大赛老韩头一家幽默服装秀家庭幽默大赛老韩头一家幽默服装秀这都被他看出来了  今天晒内裤了,室...
乐器名称 乐器名称我在小提琴协奏曲《梁祝》的视频里这种乐器不知叫什么名字,请懂音乐和乐器的朋友给予解答,谢谢。...
电视剧《老马家的幸福往事》中的... 电视剧《老马家的幸福往事》中的马鸣和徐丽娜在马鸣的大学里的图书馆里偷书时用留声机听的歌是什么名字的请...
流鬼的介绍 流鬼的介绍 流鬼,是古代民族,分布在今俄罗斯勘察加半岛,有数万人。
请问为爱所困火吗 请问为爱所困火吗一般般。爱情偶像剧。此剧上一年开播,还上了微博热搜榜我认为很火,为爱所困第二部还有不...
什么是手诊 什么是手诊手诊的概念就是指通过人体手的纹路形态、变化、规律等方式,对人体器官的演变作出推理的一种防治...
双子星公主法和希的有几集,第一... 双子星公主法和希的有几集,第一部第二部都要,如果知道第三部也透露一点,请求不要编,法和希最后怎样了拜...
王熙凤简介 王熙凤简介《红楼梦》中人物,贾琏之妻,王夫人的内侄女。长着一双丹凤三角眼,两弯柳叶吊梢眉,身量苗条,...
大学生应从哪些方面进行自我探索 大学生应从哪些方面进行自我探索兴趣、能力、价值观、性格,这四个是最主要的方面,其中价值观是核心
谁有好看的卡通人物的电脑背景! 谁有好看的卡通人物的电脑背景!卡通人物的背景要清色! 看得清 要男生的 我有Clannad主题...
幼儿园小班孩子座位固定好还是经... 幼儿园小班孩子座位固定好还是经常换好?我家孩子座位老换,我觉得不好,大家觉得呢?... 我家孩子座...
我的爸爸的作文 我的爸爸的作文我的父亲 人们常说父爱如山,可在我看来,我的父亲对我的爱,并非完全如山那样严峻,有时却...
潘朵拉之心第二季动漫什么时候出 潘朵拉之心第二季动漫什么时候出动画只出了第一季 没有要出第二季的消息 可能性估计很小目前漫画还在连载...
时不我待是什么意思 时不我待是什么意思时不我待的意思是时间不等待人,要抓紧时间,不要虚度光阴。出处:日月逝矣,岁不我与。...
葫芦小金刚里大娃怎么被抓的 葫芦小金刚里大娃怎么被抓的掉泥潭被捉的
有一部小说叫穿越千年来爱你还是... 有一部小说叫穿越千年来爱你还是什么的有一部小说叫穿越千年来爱你还是什么的内容讲的是一个女的在路上走着...
火影忍者力 米娜是红眼吗 火影忍者力 米娜是红眼吗红眼?首先这几集是原创,非岸本创作。在岸本的剧情结构里面只有木叶白眼、写轮眼...