SNOI2017 礼物
题解
设前\(n\)个人的礼物个数为\(F_n\), 那么显然\[F_n = 2 \times F_{n-1} + i^k\]
考虑矩阵快速幂
棘手的问题是:\(i^k\)不是可以直接用矩阵乘法可以递推的东西
由二项式定理可得:\[a^k = \sum_{i = 1}^{k}(a-1)^i {k \choose i}\]
那么我们可以给\(\left( (i-1)^0\; (i-1)^1\;(i-1)^2\; \cdots\; (i-1)^k\;\right)\) 乘上一个杨辉三角矩阵, 就能得到\(\left(i^0\;i^1\;i^2\;\cdots\;i^k\right)\)
然后我们就能用矩阵快速幂算\(F\), 显然\(Ans = F_{n-1} + i^k\)
于是就做完了
注意:这题两个n相乘可能会long long溢出, 因此算\(n^k\)前要先给\(n\)取模
代码
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <algorithm>using namespace std;typedef long long LL;const LL mod = 1e9 + 7;LL power(LL a, LL n, LL mod)
{LL Ans = 1;while (n){if (n & 1) Ans = Ans * a % mod;a = a * a % mod;n >>= 1;}return Ans;
}LL n; int K;struct Matrix
{LL a[12][12];Matrix() { memset(a, 0, sizeof(a)); }LL* operator [] (int x) { return a[x]; }friend Matrix operator * (Matrix a, Matrix b){Matrix Ans;for (int i = 0; i <= K + 1; i++)for (int k = 0; k <= K + 1; k++)if (a[i][k])for (int j = 0; j <= K + 1; j++)(Ans[i][j] += a[i][k] * b[k][j] % mod) %= mod;return Ans;}
};Matrix power(Matrix a, LL n)
{Matrix Ans;for (int i = 0; i <= K + 1; i++) Ans[i][i] = 1;while (n){if (n & 1) Ans = Ans * a;a = a * a;n >>= 1;}return Ans;
}Matrix Ans, a;int main()
{Matrix A, Ans;scanf("%lld %d", &n, &K);if (n <= 2){LL Ans = 1;for (int i = 2; i < n; i++)Ans = (2 * Ans + power(i, K, mod)) % mod;Ans = (Ans + power(n, K, mod)) % mod;printf("%lld\n", Ans);return 0;}A[0][0] = 1;for (int i = 1; i <= K; i++){A[i][0] = 1; A[i][i] = 1;for (int j = 1; j < i; j++)A[i][j] = (A[i-1][j-1] + A[i-1][j]) % mod;}A[K+1][K+1] = 2;for (int i = 0; i <= K; i++)A[K+1][i] = A[K][i];for (int i = 0; i <= K; i++)Ans[i][1] = 1;Ans[K+1][1] = 1;Ans = power(A, n - 2) * Ans;printf("%lld\n", (Ans[K+1][1] + power(n%mod, K, mod)) % mod);return 0;
}
转载于:https://www.cnblogs.com/2016gdgzoi509/p/11148856.html
SNOI2017 礼物相关推荐
- 大写的服!中科大博士写20万字论文:如何给女朋友送礼物
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文来源:节选自丛日飞博士学位论文 先写在前头,这是一篇正经的博士学 ...
- 中科大博士20万字正经论文:教你如何给女朋友送礼物
杨净 萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 这是一篇迟来的送礼攻略. 也是一篇正经的论文解读. 中科大博士20万字,136页论文教你如何给女朋友送礼物. 这项研究是从1012对未 ...
- 大写的服!中科大博士20万字论文:如何给女朋友送礼物
点击上方"视学算法",选择"星标" 干货第一时间送达 转载:募格学术 本文来源:科研大匠节选自丛日飞博士学位论文 这是一篇正经的博士学位论文. 情人节送什么礼物 ...
- BZOJ 2142 礼物(拓展Lucas,中国剩余定理)【BZOJ修复工程】
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2142 是 hydro 的 BZOJ ...
- (每日一题)P3723 [AH2017/HNOI2017]礼物(经典FFT)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 每日一题(莫反 / 多项式 / 母函数 / 群论) 2021.4.15 多项式 FFT Problem ...
- 饥荒怎么自动订阅服务器,饥荒联机版自动挂礼物mod及使用方法详解
饥荒联机版中官方经常会推出一些挂机掉落礼物的活动,可能一些玩家会觉得很麻烦,下面给大家分享一些自动挂礼物mod和其使用方法,希望可以帮助到各位玩家. 饥荒联机版自动挂礼物mod及使用方法详解 挂礼物m ...
- 礼物——最牛午饭证!
带着兴奋伴着激动,俺终于到家了!这不,马上给你们来羡慕一下俺刚刚收到不久的礼物!thank you 51CTO! PS:酷鸟,快来! 啦啦啦,看到了不?新鲜出炉的[最牛午饭证](PS:背景是我的小电脑 ...
- 笑哭了,科研版《后浪》,那些人类积攒了几百年的文献,像是人类专门为你们准备的礼物...
点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 来源:研究生v 前几日,<后浪>火遍了整个朋友圈,今天推荐大家这个学术版的 ...
- 洛谷P1194 买礼物
洛谷P1194 买礼物 在买了第一次之后,你还要买 n-1次,把所有点都连起来,这样做一个最小生成树 就行了,然后要注意题目中说了如果a[ i ][ j ]==0 则表示两个点是不相连的,赋值 inf ...
- 秀秀博客大赛50强的礼物
很久没有写博客了,因为忙,因为心情琐碎,还是因为懒散,可能都沾些边,这年过得,人都有些萎靡了! 中午突然收到来自51CTO的快递,着急打开,一精美的荣誉证书,和那只看图已久的不带绳子的耗子,知道就是博 ...
最新文章
- #再一次用construct2做游戏
- 使用格式工厂把视频进行旋转
- UIBarbuttonItem
- android 百度地图开发 怎么减小包的大小,最新的百度地图Android开发包中,如何隐藏右下角的放大缩小控件...
- kubernetes 磁盘、PV、PVC
- 拼多多回应“二次上市”:公司现金储备充裕 暂无任何计划
- WPF采用MVVM模式(绑定:纯前台、命令:触发器绑定命令)
- Expression Blend实例中文教程(11) - 视觉管理器快速入门Visual State Manager(VSM)
- golang 对象转json
- 同花顺股票交易接口怎样执行量化挂单策略?
- 【安全测试工程师】超实用的Web渗透测试学习路线~
- 家用linux 版本哪个好,Ubuntu到底哪个版本最好用?
- sharepoint文件夹本地同步_DIY游戏云存档 - 单机游戏存档多机异地同步方案
- 计算机走进画图世界课件,windowsxp走进画图世界教案
- 关于电子科技大学学生用餐状况的一些调查
- 2022年危险化学品经营单位安全管理人员考试模拟100题及模拟考试
- dataframe类型数据的遍历_pandas中遍历dataframe的每一个元素
- 彻底解决2440/2410触摸屏跳点以及抖动问题
- 关于gradle项目中使用queryDsl生成Q类的问题的解决方式
- 计算机辅助制造工程师什么,cam工程师是什么意思
热门文章
- php 并发出站,PHP控制站点并发
- mysql索引的创建和删除吗_MySQL索引的创建、删除和查看
- 2015-UNet论文翻译
- cypress离线安装_【拆一个高端货】 美国NI公司 GPIB-USB转接卡 长标题
- python变量赋值给数组_python 变量,数组,字符串
- kettle java代码详解_kettle 如何使用java代码
- ssh整合之四单独搭建struts的运行环境
- 注解的定义与反射调用
- 阿里云推出企业级智能协同办公方案 云桌面、云AP、云客服一应俱全
- POM (Project Object Model)简介