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取模。
输入输出样例
说明
对于8%的数据,n \le 100,m \le 10^4n≤100,m≤104.
对于100%的数据,n \le 3500,m \le 10^9n≤3500,m≤109.
数据有一定梯度。
【题意】
n个石子堆排成一排,每次可以将连续的最少L堆,最多R堆石子合并在一起,消耗的代价为要合并的石子总数。
求合并成1堆的最小代价,如果无法做到输出0
【分析】
思路0:

TLE(8分)
cin>>n>>m;
f[][]=;
for(int i=;i<=m;i++){
for(int j=;j<n;j++){
f[i&][j]=(f[i-&][(j-+n)%n]+f[i-&][(j+)%n])%mod;
}
}
cout<<f[m&][];
思路1:

思路2:

思路3:

——摘自洛谷
【代码】
思路3的
#pragma GCC optimize("Ofast,fast-math,unroll-loops")
#include<cstdio>
#include<cstring>
using namespace std;
const int N=|;
const int mod=1e9+;
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,,sizeof(int)*(n<<));
for(int i=;i<n;i++){
if(a[i]){
for(int j=;j<n;j++){
plusx(t[i+j],(long long)a[i]*b[j]%mod);
}
}
}
for(int i=;i<n;i++) c[i]=t[i];
for(int i=n;i<n<<;i++) plusx(c[i-n],t[i]);
}
int main(){
scanf("%d%d",&n,&m);
a[]=a[n-]=;ans[]=;
for(;m;m>>=,PolyMul(a,a,a)) if(m&) PolyMul(ans,a,ans);
printf("%d",ans[]);
return ;
}
P5173 传球的更多相关文章
- [洛谷P5173]传球
题目大意:有$n(n\leqslant3500)$个人坐成一个环,$0$号手上有个球,每秒钟可以向左或向右传球,问$m$秒后球在$0$号手上的方案数. 题解:一个$O(nm)$的$DP$,$f_{i, ...
- 洛谷P5173 传球(暴力)
传送门 真·暴力艹过去 不难发现这个转移其实就是一个循环卷积的形式,设有多项式\(A=x+x^{n-1}\),那么\(f_m=f_0\times A^m\) 直接暴力计算并卡常就行了 //minamo ...
- tyvj1008 传球游戏
背景 NOIP2008复赛普及组第三题 描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏. 游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一 ...
- 清北学堂模拟day4 传球接力
[问题描述]n 个小朋友在玩传球. 小朋友们用 1 到 n 的正整数编号. 每个小朋友有一个固定的传球对象,第 i 个小朋友在接到球后会将球传给第 ai个小朋友, 并且第 i 个小朋友与第 ai个小朋 ...
- NOIP2008普及组传球游戏(动态规划)——yhx
题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏. 游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球,每个同 ...
- NOIP2008 普及组T3 传球游戏 解题报告-S.B.S.
题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏. 游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球,每个同 ...
- TYVJ P1008 传球游戏
时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 NOIP2008复赛普及组第三题 描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着 ...
- P1057 传球游戏 dp
题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏. 游戏规则是这样的:nn个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球,每个 ...
- P1057 传球游戏
题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏. 游戏规则是这样的: nnn 个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球 ...
随机推荐
- django之Ajax续
接上篇随笔.继续介绍ajax的使用. 上篇友情连接:http://www.cnblogs.com/liluning/p/7831169.html 本篇导航: Ajax响应参数 csrf 跨站请求伪造 ...
- flask之基础知识点
本篇导航: 路由系统 视图函数 请求与响应 模版语法 session 蓝图(blueprint).闪现 (flash) 扩展 一.路由系统 1.可传入参数: @app.route('/user/< ...
- C# WebApi+Task+WebSocket实战项目演练(四)
一.课程介绍 本次分享课程属于<C#高级编程实战技能开发宝典课程系列>中的第四部分,阿笨后续会计划将实际项目中的一些比较实用的关于C#高级编程的技巧分享出来给大家进行学习,不断的收集.整理 ...
- CSS魔法堂:更丰富的前端动效by CSS Animation
前言 在<CSS魔法堂:Transition就这么好玩>中我们了解到对于简单的补间动画,我们可以通过transition实现.那到底多简单的动画适合用transtion来实现呢?答案就是 ...
- 基于SOUI开发一个简单的小工具
基于DriectUI有很多库,比如 Duilib (免费) soui (免费) DuiVision (免费) 炫彩 (界面库免费,UI设计器付费,不提供源码) skinui (免费使用,但不开放源码, ...
- (2):Mysql 查看、创建、更改 数据库和表
一.一探究竟 我想看看有多少个数据库,有多少个表,以及表里有啥东西.那么你可以这样: 图形界面: 命令: 查看多少个数据库:注意 后面带s #查看 SHOW DATABASES; #查看表 USE b ...
- self.location.href
self.location.href;//当前页面打开URL页面 window.location.href;//当前页面打开URL页面 this.location.href;//当前页面打开URL页面 ...
- vim配置go语法高亮
操作系统 : CentOS7.3.1611_x64 go 版本 : go1.8.3 linux/amd64 vim版本 :version 7.4.160 vim配置go语言语法高亮的问题已经遇到过好几 ...
- FreeBie—免费设计师专用素材网
FreeBie—免费设计师专用素材网 网站地址: https://freebiesupply.com/ 网站分类: 素材 浏览次数: 192 标签: 设计素材 Freebie Supply 是国外一家 ...
- 关于bazel使用笔记
当我们在build一个文件时,需要另外的放置cache时,我们需要: bazel --output_user_root=/path/to/directory build //foo:bar