题解

设前\(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 礼物相关推荐

  1. 大写的服!中科大博士写20万字论文:如何给女朋友送礼物

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文来源:节选自丛日飞博士学位论文 先写在前头,这是一篇正经的博士学 ...

  2. 中科大博士20万字正经论文:教你如何给女朋友送礼物

    杨净 萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 这是一篇迟来的送礼攻略. 也是一篇正经的论文解读. 中科大博士20万字,136页论文教你如何给女朋友送礼物. 这项研究是从1012对未 ...

  3. 大写的服!中科大博士20万字论文:如何给女朋友送礼物

    点击上方"视学算法",选择"星标" 干货第一时间送达 转载:募格学术 本文来源:科研大匠节选自丛日飞博士学位论文 这是一篇正经的博士学位论文. 情人节送什么礼物 ...

  4. BZOJ 2142 礼物(拓展Lucas,中国剩余定理)【BZOJ修复工程】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2142 是 hydro 的 BZOJ ...

  5. (每日一题)P3723 [AH2017/HNOI2017]礼物(经典FFT)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 每日一题(莫反 / 多项式 / 母函数 / 群论) 2021.4.15 多项式 FFT Problem ...

  6. 饥荒怎么自动订阅服务器,饥荒联机版自动挂礼物mod及使用方法详解

    饥荒联机版中官方经常会推出一些挂机掉落礼物的活动,可能一些玩家会觉得很麻烦,下面给大家分享一些自动挂礼物mod和其使用方法,希望可以帮助到各位玩家. 饥荒联机版自动挂礼物mod及使用方法详解 挂礼物m ...

  7. 礼物——最牛午饭证!

    带着兴奋伴着激动,俺终于到家了!这不,马上给你们来羡慕一下俺刚刚收到不久的礼物!thank you 51CTO! PS:酷鸟,快来! 啦啦啦,看到了不?新鲜出炉的[最牛午饭证](PS:背景是我的小电脑 ...

  8. 笑哭了,科研版《后浪》,那些人类积攒了几百年的文献,像是人类专门为你们准备的礼物...

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 来源:研究生v 前几日,<后浪>火遍了整个朋友圈,今天推荐大家这个学术版的 ...

  9. 洛谷P1194 买礼物

    洛谷P1194 买礼物 在买了第一次之后,你还要买 n-1次,把所有点都连起来,这样做一个最小生成树 就行了,然后要注意题目中说了如果a[ i ][ j ]==0 则表示两个点是不相连的,赋值 inf ...

  10. 秀秀博客大赛50强的礼物

    很久没有写博客了,因为忙,因为心情琐碎,还是因为懒散,可能都沾些边,这年过得,人都有些萎靡了! 中午突然收到来自51CTO的快递,着急打开,一精美的荣誉证书,和那只看图已久的不带绳子的耗子,知道就是博 ...

最新文章

  1. #再一次用construct2做游戏
  2. 使用格式工厂把视频进行旋转
  3. UIBarbuttonItem
  4. android 百度地图开发 怎么减小包的大小,最新的百度地图Android开发包中,如何隐藏右下角的放大缩小控件...
  5. kubernetes 磁盘、PV、PVC
  6. 拼多多回应“二次上市”:公司现金储备充裕 暂无任何计划
  7. WPF采用MVVM模式(绑定:纯前台、命令:触发器绑定命令)
  8. Expression Blend实例中文教程(11) - 视觉管理器快速入门Visual State Manager(VSM)
  9. golang 对象转json
  10. 同花顺股票交易接口怎样执行量化挂单策略?
  11. 【安全测试工程师】超实用的Web渗透测试学习路线~
  12. 家用linux 版本哪个好,Ubuntu到底哪个版本最好用?
  13. sharepoint文件夹本地同步_DIY游戏云存档 - 单机游戏存档多机异地同步方案
  14. 计算机走进画图世界课件,windowsxp走进画图世界教案
  15. 关于电子科技大学学生用餐状况的一些调查
  16. 2022年危险化学品经营单位安全管理人员考试模拟100题及模拟考试
  17. dataframe类型数据的遍历_pandas中遍历dataframe的每一个元素
  18. 彻底解决2440/2410触摸屏跳点以及抖动问题
  19. 关于gradle项目中使用queryDsl生成Q类的问题的解决方式
  20. 计算机辅助制造工程师什么,cam工程师是什么意思

热门文章

  1. php 并发出站,PHP控制站点并发
  2. mysql索引的创建和删除吗_MySQL索引的创建、删除和查看
  3. 2015-UNet论文翻译
  4. cypress离线安装_【拆一个高端货】 美国NI公司 GPIB-USB转接卡 长标题
  5. python变量赋值给数组_python 变量,数组,字符串
  6. kettle java代码详解_kettle 如何使用java代码
  7. ssh整合之四单独搭建struts的运行环境
  8. 注解的定义与反射调用
  9. 阿里云推出企业级智能协同办公方案 云桌面、云AP、云客服一应俱全
  10. POM (Project Object Model)简介