题目链接

我们可以很容易的推出dp的式子, dp[i] = sigma(j : 1 to k) dp[i-j]。

但是n太大了, 没有办法直接算, 所以我们构造一个矩阵, 然后快速幂就好了。

就像这样构建矩阵(举个例子

#include <vector>
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <map>
#include <set>
#include <string>
#include <queue>
#include <stack>
#include <bitset>
using namespace std;
#define pb(x) push_back(x)
#define ll long long
#define mk(x, y) make_pair(x, y)
#define lson l, m, rt<<1
#define mem(a) memset(a, 0, sizeof(a))
#define rson m+1, r, rt<<1|1
#define mem1(a) memset(a, -1, sizeof(a))
#define mem2(a) memset(a, 0x3f, sizeof(a))
#define rep(i, n, a) for(int i = a; i<n; i++)
#define fi first
#define se second
typedef pair<int, int> pll;
const double PI = acos(-1.0);
const double eps = 1e-8;
const int mod = 7777777;
const int inf = 1061109567;
const int dir[][2] = { {-1, 0}, {1, 0}, {0, -1}, {0, 1} };
ll n, m, dp[11];
struct Matrix
{ll a[102][102];Matrix() {mem(a);}
};
Matrix operator * (Matrix a, Matrix b) {Matrix c;for(int i = 0; i<n; i++) {for(int j = 0; j<n; j++) {for(int k = 0; k<n; k++) {c.a[i][j] += a.a[i][k]*b.a[k][j];c.a[i][j] %= mod;}}}return c;
}
Matrix operator ^(Matrix a, ll b) {Matrix tmp;for(int i = 0; i<n; i++)tmp.a[i][i] = 1;while(b) {if(b&1)tmp = tmp*a;a = a*a;b>>=1;}return tmp;
}
int main()
{ll k;cin>>n>>k;dp[0] = 1;for(int i = 1; i<=n; i++) {for(int j = 0; j<i; j++)dp[i] += dp[j];}if(k<=n) {cout<<dp[k]<<endl;return 0;}Matrix tmp, ans;for(int i = 0; i<n; i++) {tmp.a[0][i] = 1;tmp.a[i+1][i] = 1;}tmp = tmp^(k-n);for(int i = 0; i<n; i++) {ans.a[n-i-1][0] = dp[i+1];}ans = tmp*ans;cout<<ans.a[0][0]<<endl;return 0;
}

转载于:https://www.cnblogs.com/yohaha/p/5268496.html

vijos 1067 Warcraft III 守望者的烦恼 矩阵相关推荐

  1. Warcraft III 守望者的烦恼

    题目描述 头脑并不发达的warden最近在思考一个问题,她的闪烁技能是可以升级的,k级的闪烁技能最多可以向前移动k个监狱,一共有n个监狱要视察,她从入口进去,一路上有n个监狱,而且不会往回走,当然她并 ...

  2. Vijos P1067Warcraft III 守望者的烦恼

    题目 背景 守望者-warden,长期在暗夜精灵的的首都艾萨琳内担任视察监狱的任务,监狱是成长条行的,守望者warden拥有一个技能名叫"闪烁",这个技能可以把她传送到后面的监狱内 ...

  3. 18.03.26 vijos1067Warcraft III 守望者的烦恼

    背景 守望者-warden,长期在暗夜精灵的的首都艾萨琳内担任视察监狱的任务,监狱是成长条行的,守望者warden拥有一个技能名叫"闪烁",这个技能可以把她传送到后面的监狱内查看, ...

  4. Warcraft III 分辨率设置

    HKEY_CURRENT_USER\Software\Blizzard Entertainment\Warcraft III\Video resheight-->高度 reswidth--> ...

  5. linux版魔兽服务端,linux下玩warcraft III(魔兽)

    先介绍Winex的安装和用法,看了后就可以根据自己的具体情况具体配置了,可以直接玩WIN里装好的游戏,也可以在LINUX下安装WIN的游戏 1.首先你要到下面所列地址先下载WineX这个程序 2.安装 ...

  6. 【发现】Warcraft III v1.22 不用正版CDKey上Battle.net 续篇

    之前介绍过一个方法,有朋友说没有几个人,今天推荐一个人比上一个推荐的服务器多的,但是如果跟浩方比那没法比!仅仅享受一下上battle.net的感觉吧!何必那么较真嘛: 下载这个安装之后就可以了: ht ...

  7. 背包——完全背包Warcraft III(哈理工1053)

    *不了解01背包的同学请移步  http://blog.csdn.net/sm9sun/article/details/53235986 题目链接:http://acm.hrbust.edu.cn/i ...

  8. 宽屏 WARCRAFT III 全屏的方法

    首先给大家分享一个巨牛巨牛的人工智能教程,是我无意中发现的.教程不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵段子,像看小说一样,哈哈-我正在学习中,觉得太牛了,所以分享给大家!点这里可以跳转 ...

  9. 2.6 矩阵乘法重要特例

    重要特例 AmnA_{mn}Amn​ , BnpB_{np}Bnp​ 两个矩阵相乘,当 m,n,pm,n,pm,n,p 有的为 111 时,是极其重要的特例,具有重要意义. 定义 列向量 列数为 11 ...

最新文章

  1. InstallShield9中开始菜单的设置
  2. 不用车载传感器,也能L4级自动驾驶?清华百度联手发布全球首个纯路侧感知自动驾驶方案...
  3. 为什么 Java 不支持运算符重载?
  4. sql 精读(二) 标准 SQL 中的编号函数
  5. 转专业入门NLP,这样学就对了
  6. wxWidgets:wxStdInputStreamBuffer类用法
  7. hdu 5441 (并查集)
  8. 计算机科学家图灵,伟大的计算机科学家图灵
  9. vs2019添加opencv目录和dlib目录
  10. 什么是云计算机技术,云计算的核心技术是什么
  11. ps4手柄驱动linux,GeForce 344.11正式版驱动:支持GTX 980/970,集成DSR选项
  12. 开源WebRTC 服务器介绍
  13. 小米手机hbuilder开发者模式
  14. 谷歌或Edge浏览器在开始菜单页面不显示图标
  15. LOJ 3124 「CTS2019 | CTSC2019」氪金手游——概率+树形DP
  16. Java+MySQL基于ssm的物理竞赛管理系统 开题 论文
  17. 手眼标定eye-in-hand(一)AX=XB方程推导
  18. c语言预处理命令math,C语言之预处理命令
  19. 【Android】RXAndroid
  20. 学习笔记之软件测试4:CSDN账号密码登陆自动化测试实现(Selenium+Unitest)

热门文章

  1. (转载)网络编程释疑之:同步,异步,阻塞,非阻塞
  2. 值班问题:insert语句插入了两条数据?
  3. COJ 1006 树上操作
  4. 得到一个汉字的拼音第一个字母
  5. Java中如何解决double和float精度不准的问题
  6. C#操作XML方法集合
  7. Nettiers快速使用入门(一) 数据库
  8. 浅析epoll – epoll例子以及分析
  9. linux 基础知识及命令总结
  10. 新无限天空服务器,天空魔域3782版最新服务端(含网站程序)