隐藏页面特效

P5173 传球

 

题目背景

临近中考,pG的班主任决定上一节体育课,放松一下。

题解:https://blog.csdn.net/kkkksc03/article/details/85008120

题目描述

老师带着pG的同学们一起做传球游戏。

游戏规则是这样的: nn 个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球,每个同学可以把球传给自己左右的两个同学中的一个(左右任意),当老师再次吹哨子时,传球停止,此时,拿着球没有传出去的那个同学就是败者,要给大家表演一个节目。

pG提出一个有趣的问题:有多少种不同的传球方法可以使得从pG手里开始传的球,传了 mm 次以后,又回到pG手里。两种传球方法被视作不同的方法,当且仅当这两种方法中,接到球的同学按接球顺序组成的序列是不同的。比如有三个同学 11 号、 22 号、 33 号,并假设pG为 11 号,球传了 33 次回到pG手里的方式有 1 -> 2 -> 3 -> 11−>2>3>1和 1 -> 3 -> 2 -> 11−>3>2>1 ,共22 种。

输入输出格式

输入格式:
 

 

一行,有两个用空格隔开的整数 n,mn,m

 

输出格式:
 

 

11 个整数,表示符合题意的方法数。

由于答案可能过大,对10^9+7109+7取模。

 

输入输出样例

输入样例#1: 复制
3 3
输出样例#1: 复制
2
输入样例#2: 复制
30 30
输出样例#2: 复制
155117522
输入样例#3: 复制
1234 12345678
输出样例#3: 复制
424074635

说明

对于8%的数据,n \le 100,m \le 10^4n100,m104.

对于100%的数据,n \le 3500,m \le 10^9n3500,m109.

数据有一定梯度。

【题意】

n个石子堆排成一排,每次可以将连续的最少L堆,最多R堆石子合并在一起,消耗的代价为要合并的石子总数。

求合并成1堆的最小代价,如果无法做到输出0

 

【分析】

思路0:

TLE(8分)

cin>>n>>m; f[0][0]=1; for(int i=1;i<=m;i++){ for(int j=0;j<n;j++){ f[i&1][j]=(f[i-1&1][(j-1+n)%n]+f[i-1&1][(j+1)%n])%mod; } } cout<<f[m&1][0];

 

思路1:

 

 

思路2:

 

 

 

思路3:

 ——摘自洛谷

 

【代码】

 思路3的

#pragma GCC optimize("Ofast,fast-math,unroll-loops") #include<cstdio> #include<cstring> using namespace std; const int N=10000|1; const int mod=1e9+7; int n,m,a[N],ans[N]; inline void plusx(int &x,int y){ x+=y;if(x>=mod) x-=mod; } inline void PolyMul(int *a,int *b,int *c){ int t[N];memset(t,0,sizeof(int)*(n<<1)); for(int i=0;i<n;i++){ if(a[i]){ for(int j=0;j<n;j++){ plusx(t[i+j],(long long)a[i]*b[j]%mod); } } } for(int i=0;i<n;i++) c[i]=t[i]; for(int i=n;i<n<<1;i++) plusx(c[i-n],t[i]); } int main(){ scanf("%d%d",&n,&m); a[1]=a[n-1]=1;ans[0]=1; for(;m;m>>=1,PolyMul(a,a,a)) if(m&1) PolyMul(ans,a,ans); printf("%d",ans[0]); return 0; }

 


__EOF__

本文作者shenben
本文链接https://www.cnblogs.com/shenben/p/10498013.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   神犇(shenben)  阅读(343)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
历史上的今天:
2017-03-08 3993: [SDOI2015]星际战争
2017-03-08 P3305 [SDOI2013]费用流
点击右上角即可分享
微信分享提示