bzoj3583: 杰杰的女性朋友 && 4362: Graph
Description
Input
Output
Sample Input
2 5 4 3
7 9 2 4
0 1 5 2
6 3 9 2
2147483647 1000000001 233522 788488
10
1 1 0
2 2 1
2 4 5
4 3 10
3 4 50
1 5 1000
Sample Output
51
170107227
271772358
34562176
890241289
HINT
#include<cstdio>
#include<iostream>
#include<cmath>
#include<cassert>
#include<cstring>
#include<algorithm>
#define maxn 21
#define mod 1000000007
using namespace std;
char ch;
bool ok;
void read(int &x){
for (ok=,ch=getchar();!isdigit(ch);ch=getchar()) if (ch=='-') ok=;
for (x=;isdigit(ch);x=x*+ch-'',ch=getchar());
if (ok) x=-x;
}
int n,m,q,a,b,d;
int out[][maxn],in[maxn][],list[maxn],ans;
struct Matrix{
int v[maxn][maxn];
void init(int op){
for (int i=;i<=m;i++) for (int j=;j<=m;j++) v[i][j]=(i==j)*op;
}
}base,I,emp,tmp,res,sum,last;
Matrix operator+(const Matrix &a,const Matrix &b){
static Matrix c;
c=emp;
for (int i=;i<=m;i++) for (int j=;j<=m;j++) c.v[i][j]=(a.v[i][j]+b.v[i][j])%mod;
return c;
}
Matrix operator*(const Matrix &a,const Matrix &b){
static Matrix c;
c=emp;
for (int i=;i<=m;i++) for (int j=;j<=m;j++) for (int k=;k<=m;k++)
c.v[i][k]=(c.v[i][k]+1LL*a.v[i][j]*b.v[j][k])%mod;
return c;
}
void solve(int n){//1+a+a^2+a^3+...+a^n
if (n<){res=emp;return;}
Matrix a=base,b=a,v=I,s=I;
for(int i=n;i;i>>=,b=b*(a+I),a=a*a)
if(i&) s=s+b*v,v=v*a;
res=s;
}
int main(){
read(n),read(m),I.init(),emp.init();
for (int i=;i<=n;i++){
for (int j=;j<=m;j++) read(out[i][j]);
for (int j=;j<=m;j++) read(in[j][i]);
}
for (int i=;i<=m;i++) for (int j=;j<=m;j++) base.v[i][j]=;
for (int i=;i<=m;i++) for (int j=;j<=n;j++) for (int k=;k<=m;k++)
base.v[i][k]=(base.v[i][k]+1LL*in[i][j]*out[j][k])%mod;
read(q);
while (q--){
read(a),read(b),read(d);
solve(d-);
for (int i=;i<=m;i++) list[i]=;
for (int i=;i<=m;i++) for (int j=;j<=m;j++) list[j]=(list[j]+1LL*out[a][i]*res.v[i][j])%mod;
ans=;
for (int i=;i<=m;i++) ans=(ans+1LL*list[i]*in[i][b])%mod;
printf("%d\n",ans+(a==b));
}
return ;
}
bzoj3583: 杰杰的女性朋友 && 4362: Graph的更多相关文章
- bzoj3583 杰杰的女性朋友 || bzoj4362 Graph
http://210.33.19.103/problem/2174 很显然是矩阵快速幂的题,设有in和ou矩阵,设in矩阵的转置为in' 显然可以直接暴力求出任意两点间走一步路径条数,然后求其d次幂, ...
- [BZOJ3583]杰杰的女性朋友(矩阵快速幂)
杰杰的女性朋友 时间限制:10s 空间限制:256MB 题目描述 杰杰是魔法界的一名传奇人物.他对魔法具有深刻的洞察力,惊人的领悟力,以及令人叹为观止的创造力.自从他从事魔法竞赛以来,短短几 ...
- BZOJ3583 杰杰的女性朋友 矩阵
原文链接https://www.cnblogs.com/zhouzhendong/p/BZOJ3583.html 题目传送门 - BZOJ3583 题意 有一个 $n$ 个点构成的有向图. 对于每一个 ...
- BZOJ3583 : 杰杰的女性朋友
将$I$转置,设$G=OI$,则$ans=G^0+G^1+...+G^d$. 注意到$G^d=O(IO)^{d-1}I$,而$IO$是大小为$k\times k$的矩阵,可以通过倍增在$O(k^3\l ...
- 复旦大学EWP菁英女性课程(复旦卓越女性课程改版后第一期) _复旦大学、女性课程、高级研修班、心理学、EWP_培训通课程
复旦大学EWP菁英女性课程(复旦卓越女性课程改版后第一期) _复旦大学.女性课程.高级研修班.心理学.EWP_培训通课程 复旦大学EWP菁英女性课程(复旦卓越女性课程改版后第一期) 学 ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- cojs QAQ的矩阵 题解报告
题目描述非常的清晰 首先我们考虑(A*B)^m的求法,这个部分可以参考BZOJ 杰杰的女性朋友 我们不难发现(A*B)^m=A*(B*A)^(m-1)*B A*B是n*n的矩阵,而B*A是k*k的矩阵 ...
- qbxt五一数学Day1
目录 I. 基础知识 1. 带余除法(小学) 1. 定义 2. 性质 2. 最大公约数(gcd)/ 最小公倍数(lcm) 1. 定义 2. 性质 3. 高精度 II. 矩阵及其应用 1. 定义 2. ...
- DOM实战
作者声明:本博客中所写的文章,都是博主自学过程的笔记,参考了很多的学习资料,学习资料和笔记会注明出处,所有的内容都以交流学习为主.有不正确的地方,欢迎批评指正 视频来源:https://www.bil ...
随机推荐
- 访问者模式(Visitor)
@@@模式定义: 表示一个作用于某对象结构中的各元素的操作.它使你可以在不改变各元素的类的前提下 定义作用于这些元素的新操作. @@@练习示例: 扩展客户管理的功能 @@@示例代码: \patter ...
- [转]Android UI:看看Google官方自定义带旋转动画的ImageView-----RotateImageView怎么写(附 图片淡入淡出效果)
http://blog.csdn.net/yanzi1225627/article/details/22439119 众所周知,想要让ImageView旋转的话,可以用setRotation()让其围 ...
- oracle恢复被覆盖的存储过程
假设你不小心覆盖了之前的存储过程,那得赶紧闪回,时长越长闪回的可能性越小.原理非常easy,存储过程的定义就是数据字典,改动数据字典跟改动普通表的数据没有差别,此时会把改动前的内容放到undo中,我们 ...
- android 17 activity生命周期
手机指南针传感器处于手机头部. Activity生命周期: 启动. onCreat()方法:初始化布局对象,设置监听器. onstart()方法:注册监听器. onResume():activity已 ...
- 计算机体系结构-内存调优IPC OOMK
man ipc [root@server1 proc]# man ipcIPC(2) Linux Programmer’s Manual ...
- 进程的优先级 与 CFS 进程调度
在Linux下改变进程的优先级 作者:曾老师,华清远见嵌入式学院讲师. 作为多任务的操作系统,Linux内核为每个创建的进程分配时间片并根据其优先级进行调度.当进程被创建时,其对应的task_stru ...
- [转] Python特殊语法:filter、map、reduce、lambda
Python内置了一些非常有趣但非常有用的函数,充分体现了Python的语言魅力! filter(function, sequence):对sequence中的item依次执行function(ite ...
- Android 6.0 双卡拨号
相关 api getCallCapablePhoneAccountsAdded in API level 23 Android 5.0 之前的版本 Call from second sim 获取 si ...
- CI 笔记(1)
1. 下载CI,官方网站,目前3.x版本已经更新,2.2.6版本为2.x版本的最后的一个版本.为了和视频教材一致,使用CI 2.x版本 2. 目录结构,从application里面的,controll ...
- vs里 .sln和.suo 文件
Net解决方案下 .sln文件和.suo文件的解释:When a Web site is created, a solution file (.sln) and a hidden solution u ...