CDOJ 1280 772002画马尾 每周一题 div1 矩阵快速幂 中二版

“问题:众所周知772002很喜欢马尾,所以他决定画几幅马尾送给他的女朋友。
772002会画m种马尾,772002还有n张纸,n张纸分别编号1到n,每张纸上只能画一种马尾。
然而772002的女朋友只喜欢其中t种马尾。并且772002的女朋友只喜欢偶数(因为这象征着成对成双)。
772002想知道有多少种画法,使得n张纸画满并且自己女朋友喜欢的那t种马尾每种个数都恰好为偶数。
然而772002陪女朋友看电影去了,所以他把这个问题交给了你,你能解决吗?
m≤10,t≤m,n≤1000000000 ”
我呆呆的看着拿着神签,不知所措。

“别慌,冷静一下。正如潘星霖所讲:既然是题,那就一定能够做出来的。我们会和你一起想的。”沈柯静静的说道。
说的很有道理,但是这有什么用呢,我也想……
“我有一个简单的做法。”蹲在一旁的小郭,颤颤抖抖地举起了她的右手。
“我暴力枚举每张纸上画的是哪种马尾,然后枚举完之后,再进行检查是不是合法的就好了,这样应该就能得出答……”
“显然不行。”杨宇同还没等小郭说完,就马上就给出了回复,“这样的时间复杂度太高,根本不可能在有效时间内计算出来。”
......
又陷入了死一样的沉寂,只剩下风吹过的声音,就似鬼魂般游荡。
......
“换一个思路?”张冠澜突然说道,“我们可以令dp[i][j]表示画到第i张纸,现在t种马尾中有奇数种的个数为j的方案数。”
沈柯仿佛想到了什么,接着张冠澜说道:“恩,这个思路很好,这个dp的转移就是dp[i][j] = dp[i-1][j-1]*(t-j+1) + dp[i-1][j]*(m-t) + dp[i-1][j+1]*(j+1)。而最后的答案就是dp[n][0]。”
杨宇同补充道:“这样的时间复杂度是O(n*t)的,但是这道题要求n≤1000000000,时间仍然还是不允许,这该怎么办呢?”
一定是哪儿我们都没想到!
......
加油,我们一定想得出的,只差最后一步了。
大家仿佛都这样想着,都紧闭着双眼,思索着……

咦,好像我发现了什么,这个dp转移的时候,只和上一回合有关,而且貌似每次转移的方法都一模一样!
但是这个有什么用呢?
继续想想想。
......

“矩阵!”
“刚才那个式子,其实就是一个t*t大小的矩阵的连乘!”
“举一个例子,当t=4的时候,这个矩阵应该是什么样的呢?

然后这个矩阵的n次方的第一行第一列的第一个数就是答案!
但是,现在又有一个问题来了,如何快速求一个矩阵的n次方呢?”
“快速幂!”大家异口同声的说道。
“和潘星霖说的做法一样,我们只需要log的时间内,就能求出矩阵的n次方出来!”
“没错!”
......
仿佛这道题就解决了?
爽!
“快去,快去向系统说你的答案!时间不多了!”,张冠澜立马冲了过来,大力的将我推向了神签面前!
......
“回答正确。”
“剩余人数:8人”
“游戏继续。”
依旧是那冰冷的声音,不过格外温暖。

CDOJ 1280 772002画马尾 每周一题 div1 矩阵快速幂 中二版的更多相关文章
- CDOJ 1280 772002画马尾 每周一题 div1 矩阵快速幂
772002画马尾 题目连接: http://acm.uestc.edu.cn/#/problem/show/1280 Description 众所周知772002很喜欢马尾,所以他决定画几幅马尾送给 ...
- (中等) CF 576D Flights for Regular Customers (#319 Div1 D题),矩阵快速幂。
In the country there are exactly n cities numbered with positive integers from 1 to n. In each city ...
- HDU 5863 cjj's string game ( 16年多校10 G 题、矩阵快速幂优化线性递推DP )
题目链接 题意 : 有种不同的字符,每种字符有无限个,要求用这k种字符构造两个长度为n的字符串a和b,使得a串和b串的最长公共部分长度恰为m,问方案数 分析 : 直觉是DP 不过当时看到 n 很大.但 ...
- 华东交通大学2018年ACM“双基”程序设计竞赛 C. 公式题 (2) (矩阵快速幂)
题目链接:公式题 (2) 比赛链接:华东交通大学2018年ACM"双基"程序设计竞赛 题目描述 令f(n)=2f(n-1)+3f(n-2)+n,f(1)=1,f(2)=2 令g(n ...
- [luogu1707] 刷题比赛 [矩阵快速幂]
题面: 传送门 思路: 一眼看上去是三个递推......好像还挺麻烦的 仔细观察一下,发现也就是一个线性递推,但是其中后面的常数项比较麻烦 观察一下,这里面有以下三个递推是比较麻烦的 第一个是$k^2 ...
- Bzoj2510 弱题(矩阵快速幂)
题面(权限题) 题解 一道概率\(dp\),可以设\(f[i][j]\)表示第\(i\)次操作后,标号为\(j\)的小球的期望个数,那么有: \[ \begin{aligned} &f[i][ ...
- generator 1(2019年牛客多校第五场B题+十进制矩阵快速幂)
目录 题目链接 思路 代码 题目链接 传送门 思路 十进制矩阵快速幂. 代码 #include <set> #include <map> #include <deque& ...
- BZOJ 2510: 弱题( 矩阵快速幂 )
每进行一次, 编号为x的数对x, 和(x+1)%N都有贡献 用矩阵快速幂, O(N3logK). 注意到是循环矩阵, 可以把矩阵乘法的复杂度降到O(N2). 所以总复杂度就是O(N2logK) --- ...
- Wannafly Winter Camp 2019.Day 8 div1 E.Souls-like Game(线段树 矩阵快速幂)
题目链接 \(998244353\)写成\(99824435\)然后调这个线段树模板1.5h= = 以后要注意常量啊啊啊 \(Description\) 每个位置有一个\(3\times3\)的矩阵, ...
随机推荐
- Linux网络编程之套接字基础
1.套接字的基本结构 struct sockaddr 这个结构用来存储套接字地址. 数据定义: struct sockaddr { unsigned short sa_family; /* addre ...
- scrapy抓取学院新闻报告
抓取四川大学公共管理学院官网(http://ggglxy.scu.edu.cn)所有的新闻咨询. 实验流程 1.确定抓取目标.2.制定抓取规则.3.'编写/调试'抓取规则.4.获得抓取数据 1.确定抓 ...
- MyBatis批量插入数据(MySql)
由于项目需要生成多条数据,并保存到数据库当中,在程序中封装了一个List集合对象,然后需要把该集合中的实体插入到数据库中,项目使用了Spring+MyBatis,所以打算使用MyBatis批量插入,应 ...
- 使用 Visual Studio 部署 .NET Core 应用 ——.Net Core 部署到Ubuntu 16.04
.Net Core 部署到Ubuntu 16.04 中的步骤 1.安装工具 1.apache 2..Net Core(dotnet-sdk-2.0) 3.Supervisor(进程管理工具,目的是服务 ...
- 【linux】su和sudo命令的区别
来源:http://www.jb51.net/LINUXjishu/12713.html 一. 使用 su 命令临时切换用户身份 1.su 的适用条件和威力 su命令就是切换用户的工具,怎么理解呢?比 ...
- linux命令(12):ping命令
1.ping网关:ping –b 192.168.1.1 2.ping指定次数:ping -c 10 192.168.1.100 3.时间间隔和次数限制的ping:ping -c 10 -i 0.5 ...
- 多路复用I/O模型epoll() 模型 代码实现
epoll模型 int epoll_create(int maxevent) //创建一个epoll的句柄 然后maxevent表示监听的数目的大小int epoll_ctl(int epollfd, ...
- hdu 1506(好题+DP或者RMQ)
Largest Rectangle in a Histogram Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 ...
- Simplify Path——简单经典的预处理
Given an absolute path for a file (Unix-style), simplify it. For example,path = "/home/", ...
- Multiply Strings——面试题
Given two numbers represented as strings, return multiplication of the numbers as a string. Note: Th ...