vijos 1067 Warcraft III 守望者的烦恼 矩阵
题目链接
我们可以很容易的推出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 守望者的烦恼 矩阵相关推荐
- Warcraft III 守望者的烦恼
题目描述 头脑并不发达的warden最近在思考一个问题,她的闪烁技能是可以升级的,k级的闪烁技能最多可以向前移动k个监狱,一共有n个监狱要视察,她从入口进去,一路上有n个监狱,而且不会往回走,当然她并 ...
- Vijos P1067Warcraft III 守望者的烦恼
题目 背景 守望者-warden,长期在暗夜精灵的的首都艾萨琳内担任视察监狱的任务,监狱是成长条行的,守望者warden拥有一个技能名叫"闪烁",这个技能可以把她传送到后面的监狱内 ...
- 18.03.26 vijos1067Warcraft III 守望者的烦恼
背景 守望者-warden,长期在暗夜精灵的的首都艾萨琳内担任视察监狱的任务,监狱是成长条行的,守望者warden拥有一个技能名叫"闪烁",这个技能可以把她传送到后面的监狱内查看, ...
- Warcraft III 分辨率设置
HKEY_CURRENT_USER\Software\Blizzard Entertainment\Warcraft III\Video resheight-->高度 reswidth--> ...
- linux版魔兽服务端,linux下玩warcraft III(魔兽)
先介绍Winex的安装和用法,看了后就可以根据自己的具体情况具体配置了,可以直接玩WIN里装好的游戏,也可以在LINUX下安装WIN的游戏 1.首先你要到下面所列地址先下载WineX这个程序 2.安装 ...
- 【发现】Warcraft III v1.22 不用正版CDKey上Battle.net 续篇
之前介绍过一个方法,有朋友说没有几个人,今天推荐一个人比上一个推荐的服务器多的,但是如果跟浩方比那没法比!仅仅享受一下上battle.net的感觉吧!何必那么较真嘛: 下载这个安装之后就可以了: ht ...
- 背包——完全背包Warcraft III(哈理工1053)
*不了解01背包的同学请移步 http://blog.csdn.net/sm9sun/article/details/53235986 题目链接:http://acm.hrbust.edu.cn/i ...
- 宽屏 WARCRAFT III 全屏的方法
首先给大家分享一个巨牛巨牛的人工智能教程,是我无意中发现的.教程不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵段子,像看小说一样,哈哈-我正在学习中,觉得太牛了,所以分享给大家!点这里可以跳转 ...
- 2.6 矩阵乘法重要特例
重要特例 AmnA_{mn}Amn , BnpB_{np}Bnp 两个矩阵相乘,当 m,n,pm,n,pm,n,p 有的为 111 时,是极其重要的特例,具有重要意义. 定义 列向量 列数为 11 ...
最新文章
- InstallShield9中开始菜单的设置
- 不用车载传感器,也能L4级自动驾驶?清华百度联手发布全球首个纯路侧感知自动驾驶方案...
- 为什么 Java 不支持运算符重载?
- sql 精读(二) 标准 SQL 中的编号函数
- 转专业入门NLP,这样学就对了
- wxWidgets:wxStdInputStreamBuffer类用法
- hdu 5441 (并查集)
- 计算机科学家图灵,伟大的计算机科学家图灵
- vs2019添加opencv目录和dlib目录
- 什么是云计算机技术,云计算的核心技术是什么
- ps4手柄驱动linux,GeForce 344.11正式版驱动:支持GTX 980/970,集成DSR选项
- 开源WebRTC 服务器介绍
- 小米手机hbuilder开发者模式
- 谷歌或Edge浏览器在开始菜单页面不显示图标
- LOJ 3124 「CTS2019 | CTSC2019」氪金手游——概率+树形DP
- Java+MySQL基于ssm的物理竞赛管理系统 开题 论文
- 手眼标定eye-in-hand(一)AX=XB方程推导
- c语言预处理命令math,C语言之预处理命令
- 【Android】RXAndroid
- 学习笔记之软件测试4:CSDN账号密码登陆自动化测试实现(Selenium+Unitest)