DP+矩阵快速幂 HDOJ 5318 The Goddess Of The Moon
#include <bits/stdc++.h>
using namespace std; typedef long long ll;
typedef vector<ll> Vec;
typedef vector<Vec> Mat;
const int N = 55;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9 + 7;
int n, m;
int a[N];
int dp[N][N]; bool judge(int x, int y) {
char p[15], q[15];
sprintf(p, "%d", x);
sprintf(q, "%d", y);
int lenp = strlen(p), lenq = strlen(q);
for (int i=0; i<lenp; ++i) {
int k = 0;
while (i + k < lenp && k < lenq && p[i+k] == q[k]) k++;
if (i + k == lenp && k >= 2) return true;
}
return false;
} void add_mod(ll &a, ll b) {
a += b;
if (a >= MOD) a -= MOD;
} Mat matrix_mul(const Mat &A, const Mat &B) {
Mat ret(A.size(), Vec(B[0].size()));
for (int i=0; i<A.size(); ++i)
for (int j=0; j<A[0].size(); ++j) if (A[i][j])
for (int k=0; k<B[0].size(); ++k) if (B[j][k])
add_mod(ret[i][k], A[i][j]*B[j][k]%MOD);
return ret;
} Mat matrix_pow(Mat X, int n) {
Mat ret(X.size(), Vec(X.size()));
for (int i=0; i<X.size(); ++i) ret[i][i] = 1;
for (; n; n>>=1) {
if (n & 1) ret = matrix_mul(ret, X);
X = matrix_mul(X, X);
}
return ret;
} Mat get_base() {
Mat ret(n, Vec(n));
for (int i=0; i<n; ++i) {
for (int j=0; j<n; ++j) {
if (judge(a[i], a[j])) ret[i][j] = 1;
}
}
return ret;
} int main() {
int T;
scanf("%d", &T);
while (T--) {
scanf("%d%d", &n, &m);
for (int i=0; i<n; ++i) {
scanf("%d", &a[i]);
}
sort(a, a+n);
n = unique(a, a+n)-a;
Mat base = get_base();
Mat res = matrix_pow(base, m-1);
ll ans = 0;
for (int i=0; i<n; ++i) {
for (int j=0; j<n; ++j) {
add_mod(ans, res[i][j]);
}
}
printf("%lld\n", ans);
}
return 0;
}
DP+矩阵快速幂 HDOJ 5318 The Goddess Of The Moon的更多相关文章
- bnuoj 34985 Elegant String DP+矩阵快速幂
题目链接:http://acm.bnu.edu.cn/bnuoj/problem_show.php?pid=34985 We define a kind of strings as elegant s ...
- HDU 5434 Peace small elephant 状压dp+矩阵快速幂
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5434 Peace small elephant Accepts: 38 Submissions: ...
- 【BZOJ】2004: [Hnoi2010]Bus 公交线路 状压DP+矩阵快速幂
[题意]n个点等距排列在长度为n-1的直线上,初始点1~k都有一辆公车,每辆公车都需要一些停靠点,每个点至多只能被一辆公车停靠,且每辆公车相邻两个停靠点的距离至多为p,所有公车最后会停在n-k+1~n ...
- 【BZOJ】4861: [Beijing2017]魔法咒语 AC自动机+DP+矩阵快速幂
[题意]给定n个原串和m个禁忌串,要求用原串集合能拼出的不含禁忌串且长度为L的串的数量.(60%)n,m<=50,L<=100.(40%)原串长度为1或2,L<=10^18. [算法 ...
- BZOJ5298 CQOI2018 交错序列 【DP+矩阵快速幂优化】*
BZOJ5298 CQOI2018 交错序列 [DP+矩阵快速幂优化] Description 我们称一个仅由0.1构成的序列为"交错序列",当且仅当序列中没有相邻的1(可以有相邻 ...
- Codeforces 621E Wet Shark and Block【dp + 矩阵快速幂】
题意: 有b个blocks,每个blocks都有n个相同的0~9的数字,如果从第一个block选1,从第二个block选2,那么就构成12,问对于给定的n,b有多少种构成方案使最后模x的余数为k. 分 ...
- codeforces E. Okabe and El Psy Kongroo(dp+矩阵快速幂)
题目链接:http://codeforces.com/contest/821/problem/E 题意:我们现在位于(0,0)处,目标是走到(K,0)处.每一次我们都可以从(x,y)走到(x+1,y- ...
- [BZOJ1009] [HNOI2008] GT考试(KMP+dp+矩阵快速幂)
[BZOJ1009] [HNOI2008] GT考试(KMP+dp+矩阵快速幂) 题面 阿申准备报名参加GT考试,准考证号为N位数X1X2-.Xn,他不希望准考证号上出现不吉利的数字.他的不吉利数学A ...
- 瓷砖铺放 (状压DP+矩阵快速幂)
由于方块最多涉及3行,于是考虑将每两行状压起来,dfs搜索每种状态之间的转移. 这样一共有2^12种状态,显然进行矩阵快速幂优化时会超时,便考虑减少状态. 进行两遍bfs,分别为初始状态可以到达的状态 ...
随机推荐
- 修改linux端口范围 ip_local_port_range
tags: ip_local_port_range 端口范围 sysctl Linux中有限定端口的使用范围,如果我要为我的程序预留某些端口,那么我需要控制这个端口范围, 本文主要描述如何去修改端口范 ...
- Spark 3000门徒第二课scala面向对象总结
昨晚听了王家林老师3000门徒spark系列课程的第二课,讲述了scala面向对象知识,并且带着过了一遍Spark核心类:SparkContent,RDD的代码,下面写一下心得: RDD是抽象类,实现 ...
- [2016-06-28]dhclient命令的进程没杀死,导致不断在向DHCP服务器获取IP
# Date:2016-06-28 # 问题:主机的配置文件/etc/sysconfig/network-scripts/ifcfg-eth0 已经配置好了静态的IP. 但隔几分钟主机的IP就自己变化 ...
- 团队项目——NABC
N:根据自身遇到的问题,应对铁大环境——查询图书时只能登录网页进行查询,对于我们铁大莘莘学子着实是不方便的.所以此项目诞生. A:对于实现方法,首先我们随移动设备的潮流,做一个Android应用,对于 ...
- VS2013 help viewer搜索结果显示源码以及桌面独立运行help viewer
安装好VS2013后,启动help viewer2.1在搜索栏中搜搜时结果会出现HTML源码. 要解决这个问题先来看看MINE,即Multipurpose Internet Mail Extensio ...
- 【Merge K Sorted Lists】cpp
题目: Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexit ...
- 前端之JavaScript第一天学习(2)-JavaScript 使用
HTML 中的脚本必须位于 <script> 与 </script> 标签之间.脚本可被放置在 HTML 页面的 <body> 和 <head> 部分中 ...
- 关于Google+以及Facebook第三方登录实现的一点总结
简述 最近项目中有关于第三方登陆的需求,第三方Facebook以及Google +登录. 正好这几天把这个需求做得差不多了,收个尾,作为一个这方面之前基本从未涉及的小白,总结下开发流程以及过程中遇到的 ...
- IT小小鸟读后感
我是一只小小鸟(读后感) 当我成为闽江学院的一名学子时,我选择了我自己的专业(软件工程).成为大一新生的我对着未来充满着希望憧憬.但现实并不是美好的我得替今后的我想想以后大学毕业了到底我到了社会上要用 ...
- 搜索 基础 AC 2014-01-14 15:53 170人阅读 评论(0) 收藏
题目网址:http://haut.openjudge.cn/xiyoulianxi1/1/ 1:晶矿的个数 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 ...