CF-Codeforces Round #420 (Div. 2)-E-Okabe and El Psy Kongroo
来源:互联网 发布:diner dash 5 mac 编辑:程序博客网 时间:2024/05/08 03:38
ACM模版
描述
题解
这个题是矩阵快速幂问题,给定若干个上界,每个上界都是有一定宽度的,这些上界在 x 轴的投影是连续的,要我们从
因为上界最大为
这也是本题的核心,构造出来这个矩阵,也就好写多了……
剩下的就看看代码吧,没有什么稀奇古怪的了,注意数据类型。
代码
#include <cstdio>#include <cstring>#define mod(x) ((x) % MOD)using namespace std;typedef long long ll;const ll MOD = 1e9 + 7;const int MAX_MAT_SIZE = 16;typedef struct Matrix{ ll m[MAX_MAT_SIZE][MAX_MAT_SIZE];} mat;mat A, B, pre, unit;mat matrix_mul(mat a, mat b, int len){ mat ret; memset(ret.m, 0, sizeof(ret.m)); for (int k = 0; k <= len; k++) { for (int i = 0; i <= len; i++) { if (a.m[i][k]) { for (int j = 0; j <= len; j++) { ret.m[i][j] = mod(ret.m[i][j] + (ll)a.m[i][k] * b.m[k][j]); } } } } return ret;}void init(){ memset(A.m, 0, sizeof(A.m)); for (int i = 0; i < MAX_MAT_SIZE; i++) { for (int j = i - 1; j < i + 2 && j < MAX_MAT_SIZE; j++) { if (j >= 0) { A.m[i][j] = 1; } } } memset(unit.m, 0, sizeof(unit.m)); for (ll i = 0; i < MAX_MAT_SIZE; i++) { unit.m[i][i] = 1; } memset(pre.m, 0, sizeof(pre.m)); pre.m[0][0] = 1;}Matrix matrix_quick_power(mat a, ll k, int len){ mat ret = unit; while (k) { if (k & 1) { ret = matrix_mul(a, ret, len); } a = matrix_mul(a, a, len); k >>= 1; } return ret;}int n;ll k;int main(){ init(); scanf("%d%lld", &n, &k); ll a, b; int c, flag = 0; for (int i = 1; i <= n; i++) { scanf("%lld%lld%d", &a, &b, &c); if (b > k) { b = k; flag = 1; } B = matrix_quick_power(A, b - a, c); for (int j = c + 1; j < MAX_MAT_SIZE; j++) { pre.m[j][0] = 0; } B = matrix_mul(B, pre, c); for (int j = 0; j <= c; j++) { pre.m[j][0] = B.m[j][0]; } if (flag == 1) { break; } } printf("%lld\n", B.m[0][0]); return 0;}
阅读全文
0 0
- CF-Codeforces Round #420 (Div. 2)-E-Okabe and El Psy Kongroo
- CF round#420 div.2 E Okabe and El Psy Kongroo【矩阵快速幂】
- Codeforces Round #420 (Div. 2) E. Okabe and El Psy Kongroo
- Codeforces Round #420 (Div. 2) 821E. Okabe and El Psy Kongroo
- Codeforces Round #420 (Div. 2) E. Okabe and El Psy Kongroo dp+矩阵快速幂
- Codeforces Round #420 (Div. 2) E. Okabe and El Psy Kongroo(矩阵快速幂)
- Codeforces Round #420 (Div. 2) E. Okabe and El Psy Kongroo(矩阵快速幂)
- Codeforces Round #420 (Div. 2) E. Okabe and El Psy Kongroo [矩阵快速幂]
- Codeforces Round #420 (Div. 2) E. Okabe and El Psy Kongroo 矩阵快速幂+dp
- Codeforces Round #420 (Div. 2) E. Okabe and El Psy Kongroo dp+矩阵快速幂
- Codeforces 821 E. Okabe and El Psy Kongroo
- CodeForces 821E Okabe and El Psy Kongroo
- 【动态规划21】Codeforces Round #420 821E Okabe and El Psy Kongroo(dp+矩阵快速幂)
- E.Okabe and El Psy Kongroo
- Okabe and El Psy Kongroo CodeForces
- Codeforces 821E Okabe and El Psy Kongroo【Dp+矩阵快速幂】套路题
- Codeforces 821E Okabe and El Psy Kongroo 递推+矩阵幂
- Codeforces 821E Okabe and El Psy Kongroo(Dp+矩阵快速幂)
- Hibernate
- java输入一个数,将其拆分,降序排列。
- 数据结构之广义表和二叉树
- 1050. 螺旋矩阵(25)
- easyUi想到哪里就写到哪里
- CF-Codeforces Round #420 (Div. 2)-E-Okabe and El Psy Kongroo
- POst man 使用教程
- python的虚拟环境的创建
- TCP流量控制
- HDU 4793 Collision【计算几何】
- BAT 批处理脚本教程(转载)
- 1004.无环图
- 条件判断语句和循环的格式
- bzoj 4538: [Hnoi2016]网络 (整体二分+树状数组)