hdu 6185
来源:互联网 发布:市场调研软件 编辑:程序博客网 时间:2024/06/15 16:35
题意:4*n矩形由 1*2 和 2*1 的矩形组成的方案数
分析:分析出n+1的情况,矩阵幂
具体看这里:http://blog.csdn.net/a664607530/article/details/77619554
#include <iostream>#include <cstdio>#include <string>#include <cstring>#include <algorithm>#include <queue>#include <vector>#include <set>#include <stack>#include <map>#include <climits>using namespace std;#define LL long longconst int INF = 0x3f3f3f3f;const LL mod = 1e9 + 7;LL n;struct Matrix{ LL v[6][6]; Matrix() { memset(v, 0, sizeof v); }} dan;Matrix mul(Matrix a, Matrix b, int d){ Matrix ans; for (int i = 0; i < d; i++) for (int j = 0; j < d; j++) for (int k = 0; k < d; k++) ans.v[i][j] = (ans.v[i][j] + a.v[i][k] * b.v[k][j] % mod) % mod; return ans;}Matrix pow(Matrix a, LL k, int d){ Matrix ans = dan; while (k) { if (k & 1) ans = mul(ans, a, d); k >>= 1; a = mul(a, a, d); } return ans;}int main(){ while (~scanf("%lld", &n)) { dan.v[0][0] = dan.v[0][1] = dan.v[0][2] = 1; dan.v[0][3] = 2; Matrix a, ans; a.v[0][0] = a.v[0][1] = a.v[0][2] = 1, a.v[0][3] = 2; a.v[1][0] = 1; a.v[2][0] = a.v[2][4] = 1; a.v[3][0] = a.v[3][3] = 1; a.v[4][2] = 1; ans = pow(a, n - 1, 5); printf("%lld\n", ans.v[0][0]); } return 0;}
阅读全文
0 0
- hdu 6185
- hdu 6185 Covering
- HDU 6185 Covering
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- HDU
- Hdu
- hdu
- hdu-
- hdu
- Terms of Service
- 频道管理
- 贝塞尔曲线----有趣的图形学
- 使用spring集成的kafka收发消息
- 关于setTimeout跟setinterval的一些基本的用法/小常识
- hdu 6185
- linux CentOS下shell不显示用户名路径的解决方法
- block,inline和inline-block概念和区别
- android 开发如何做内存优化
- scanf处理
- tensorflow库函数解析
- 手机联系人的增删改查
- 计算机网络:TCP与UDP(二)
- C语言总结