【矩阵快速幂】 HDOJ 5434 Peace small elephant
来源:互联网 发布:零基础学云计算 编辑:程序博客网 时间:2024/06/07 08:30
对每一列状态压缩,然后矩阵加速即可。。。
#include <bits/stdc++.h>using namespace std;typedef long long LL;const int mod = 1e9+7;const int maxn = 130;LL mat[maxn][maxn];LL mid[maxn][maxn];LL res[maxn][maxn];int n, m;void calc(int b){int N = 1 << m;memset(res, 0, sizeof res);for(int i = 0; i < N; i++) res[i][i] = 1;while(b) {if(b % 2) {for(int i = 0; i < N; i++)for(int j = 0; j < N; j++) {LL t = 0;for(int k = 0; k < N; k++)t = (t + res[i][k] * mat[k][j]) % mod;mid[i][j] = t;}memcpy(res, mid, sizeof res);}for(int i = 0; i < N; i++)for(int j = 0; j < N; j++) {LL t = 0;for(int k = 0; k < N; k++)t = (t + mat[i][k] * mat[k][j]) % mod;mid[i][j] = t;}memcpy(mat, mid, sizeof mat);b /= 2;}}bool check(int a, int b){for(int i = 0; i < m; i++) {if((1 << i) & b) {if(i) {if(((1 << i-1) & a) && ((1 << i-1) & b) == 0 && ((1 << i) & a) == 0)return 0;}if(i+1 < m) {if(((1 << i+1) & a) && ((1 << i+1) & b) == 0 && ((1 << i) & a) == 0)return 0;}}}return 1;}void work(){memset(mat, 0, sizeof mat);for(int i = 0; i < 1 << m; i++)for(int j = 0; j < 1 << m; j++)mat[i][j] = check(i, j);calc(n);LL ans = 0;for(int i = 0; i < 1 << m; i++) ans = (ans + res[0][i]) % mod;printf("%lld\n", ans);}int main(){while(scanf("%d%d", &n, &m) != EOF) {work();}return 0;}
0 0
- 【矩阵快速幂】 HDOJ 5434 Peace small elephant
- DFS矩阵构造+快速矩阵幂 hdu5434 Peace small elephant
- hdu 5435 Peace small elephant(矩阵快速幂)
- hdu 5434 Peace small elephant 状压 快速幂
- hdu-5434 Peace small elephant
- HDU 5434 Peace small elephant
- hdu 5434 Peace small elephant
- hdoj 5015 构造矩阵+矩阵快速幂
- HDOJ 2294 - Pendant(DP+矩阵快速幂)
- 【矩阵快速幂】 HDOJ 4990 Reading comprehension
- 【矩阵快速幂】 HDOJ 5015 233 Matrix
- hdoj 1575 Tr A 【矩阵快速幂】
- Hdoj 1588 Gauss Fibonacci 【矩阵快速幂】
- hdoj-1588-Gauss Fibonacci【矩阵快速幂】
- hdoj-1575-Tr A【矩阵快速幂】
- HDOJ 233 Matrix 5015【矩阵快速幂】
- hdoj 1575 Tr A 【矩阵快速幂】
- hdoj 5015 233 Matrix 【矩阵快速幂】
- 【剑指Offer】重建二叉树
- 路由子系统——路由查找(留坑)
- 【LeetCode从零单刷】Binary Tree Postorder Traversal
- Oracle GoldenGate 系列:Extract 进程的恢复原理
- 路哟子系统——高级路由(留坑)
- 【矩阵快速幂】 HDOJ 5434 Peace small elephant
- Speed Limit-2017
- c# DateTime.Now 大写英文月份
- Eclipse常用插件在线安装
- 《AndroidStudio每日一贴》9. 如何使用导航栏快速切换项目中的视图?
- hdoj 3308 LCIS 【线段树单点更新 + 区间合并】【求解最长递增序列 的长度】
- asp.net request 获取前台数据 disabled
- 程序员面试之指针和应用(三)
- 技术总结