Luogu 4159 [SCOI2009]迷路
BZOJ 1297
应当是简单题。
发现边权的数量很小,所以我们暴力把一个点拆成$9$个点,然后把$(x, i)$到$(x, i + 1)$连边,代表转移一次之后可以走回来;对于每一条存在的边$(i, j, k)$,把$(i, k)$向$(j, 1)$连边,代表走一条路。然后用这个矩阵乘$T$次即可,这样子最后的答案$ans = [(1, 1)][(n, 1)]$格子的值。
记$m = 9 * n$,时间复杂度为$O(m^3logT)$。
Code:
#include <cstdio>
#include <cstring>
using namespace std; const int N = ;
const int M = ;
const int P = ; int n, tim; inline void inc(int &x, int y) {
x += y;
if(x >= P) x -= P;
} inline int id(int x, int k) {
return (x - ) * + k;
} struct Matrix {
int len, wid, s[M][M]; inline void init(int r, int c) {
len = r, wid = c;
memset(s, , sizeof(s));
} friend Matrix operator * (const Matrix &x, const Matrix &y) {
Matrix res; res.init(x.len, y.wid);
for(int k = ; k <= x.wid; k++)
for(int i = ; i <= x.len; i++)
for(int j = ; j <= y.wid; j++)
inc(res.s[i][j], x.s[i][k] * y.s[k][j] % P);
return res;
} inline void print() {
for(int i = ; i <= len; i++, printf("\n"))
for(int j = ; j <= wid; j++)
printf("%d ", s[i][j]);
} } f; inline Matrix fpow(Matrix x, int y) {
Matrix res; res.init(x.len, x.wid);
for(int i = ; i <= x.len; i++) res.s[i][i] = ;
for(; y > ; y >>= ) {
if(y & ) res = res * x;
x = x * x;
}
return res;
} int main() {
scanf("%d%d", &n, &tim);
f.init( * n, * n);
for(int i = ; i <= n; i++) {
char str[N];
scanf("%s", str + );
for(int j = ; j <= n; j++) {
int k = str[j] - '';
if(!k) continue;
f.s[id(i, k)][id(j, )] = ;
} for(int j = ; j <= ; j++)
f.s[id(i, j - )][id(i, j)] = ;
} // f.print(); f = fpow(f, tim);
// f.print(); printf("%d\n", f.s[id(, )][id(n, )]);
return ;
}
Luogu 4159 [SCOI2009]迷路的更多相关文章
- Luogu P4159 [SCOI2009]迷路 矩阵快速幂+精巧转化
大致就是矩阵快速幂吧.. 这个时候会发现这些边权$\le 9$,然后瞬间想到上回一道题:是不是可以建一堆转移矩阵再建一个$lcm(1,2,3,4,5,6,7,8,9)$的矩阵?...后来发现十分的慢q ...
- LUOGU P4159 [SCOI2009]迷路(矩阵乘法)
传送门 解题思路 以前bpw讲过的一道题,顺便复习一下矩阵乘法.做法就是拆点,把每个点拆成\(9\)个点,然后挨个连边.之后若\(i\)与\(j\)之间的边长度为\(x\),就让\(i\)的第\(x\ ...
- BZOJ 1297: [SCOI2009]迷路( dp + 矩阵快速幂 )
递推式很明显...但是要做矩阵乘法就得拆点..我一开始很脑残地对于每一条权值v>1的边都新建v-1个节点去转移...然后就TLE了...把每个点拆成9个就可以了...时间复杂度O((9N)^3* ...
- 1297: [SCOI2009]迷路
1297: [SCOI2009]迷路 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 652 Solved: 442[Submit][Status] ...
- 【矩阵快速幂】bzoj1297 [SCOI2009]迷路
1297: [SCOI2009]迷路 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1407 Solved: 1007[Submit][Status ...
- [BZOJ 1297][SCOI2009]迷路
1297: [SCOI2009]迷路 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1418 Solved: 1017[Submit][Status ...
- B20J_1297_[SCOI2009]迷路_矩阵乘法
B20J_1297_[SCOI2009]迷路_矩阵乘法 题意:有向图 N 个节点,从节点 0 出发,必须恰好在 T 时刻到达节点 N-1.总共有多少种不同的路径? 2 <= N <= 10 ...
- luogu P2657 [SCOI2009]windy数 数位dp 记忆化搜索
题目链接 luogu P2657 [SCOI2009]windy数 题解 我有了一种所有数位dp都能用记忆话搜索水的错觉 代码 #include<cstdio> #include<a ...
- 【BZOJ1297】[SCOI2009]迷路(矩阵快速幂)
[BZOJ1297][SCOI2009]迷路(矩阵快速幂) 题面 BZOJ 洛谷 题解 因为边权最大为\(9\),所以记录往前记录\(9\)个单位时间前的.到达每个点的方案数就好了,那么矩阵大小就是\ ...
随机推荐
- 恢复所有情况的ip地址
在终端下输入一串ip字符串如:19219219211,ip地址可能是19.219.219.211.192.19.219.211.192.192.19.211和192.192.192.11. 以下是本人 ...
- 野村综合社,惠普2面,索尼,CDK面试经理
今天疯了一口气面试了四个企业,自我介绍都说了七八遍,晚上回家到头就睡.中间接了oracle的电话,也不知道如何. 11:00野村面试 野村综合社北京流通部 面试3个人,一个英语部门负责人,一个日语负责 ...
- myeclipse按.自动提示方法
第一步:菜单Window->Preferences->Java->Editor->Content Assist->Enable auto activation 选项要打勾 ...
- (转)Android中的页面切换动画
这段时间一直在忙Android的项目,总算抽出点时间休息一下,准备把一些项目用到的Android经验分享一下. 在Android开发过程中,经常会碰到Activity之间的切换效果的问题,下面介绍一下 ...
- spring mvc加了@produces注解后报406
问题背景:调用http的post接口返回一个String类型的字符串时中文出现乱码,定位出问题后在@RequestMapping里加produces注解produces = "applica ...
- dubbox部署到jdk1.7环境,启动:java.lang.NoSuchMethodError: java.util.concurrent.ConcurrentHashMap.keySet()
本地用jdk1.8编译的服务提供端war包,部署到环境报错了: INFO: Initializing Spring root WebApplicationContext [16/08/17 05:14 ...
- DLatch by Verilog
//-----------------------------------------------------// Design Name : dlatch_reset// File Name : ...
- 搭建Ganglia乱码及其他问题总汇
搭建Ganglia乱码及其他问题 搭建完Ganglia监控后图像显示正常,但是文字却显示都是小方框,最后确定是由于系统缺少字体导致的, /usr/share/fonts/ Centos默认存放字体的 ...
- MySQL模式匹配(LIKE VS REGEXP)
3.3.4.7. 模式匹配 MySQL提供标准的SQL模式匹配,以及一种基于象Unix实用程序如vi.grep和sed的扩展正则表达式模式匹配的格式. SQL模式匹配允许你使用“_”匹配任何单个字符, ...
- EasyUI treegrid 加载checked
EasyUI treegrid 加载checked $(function () { $('#tbDictContTree').treegrid({ title: '数据字典目录管理', iconCl ...