2015 多校联赛 ——HDU5302(矩阵快速幂)

VCSA 6.7证书过期别慌!手把手教你通过SSH修改系统时间恢复登录(附STS证书修复脚本) 本文详细介绍了VCSA 6.7证书过期的应急处理方案,包括通过SSH修改系统时间临时恢复登录、全面更新证书体系以及专项修复STS证书的实战步骤。文章还提供了后期验证和系统加固的建议,帮助运维人员有效应对证书过期问题,确保虚拟化平台的稳定运行。 阅读详情

The Goddess Of The Moon

Sample Input
2 10 50 12 1213 1212 1313231 12312413 12312 4123 1231 3 131 5 50 121 123 213 132 321
 

Sample Output
86814837 797922656



题意:给你n个字符串,若是一个的后缀与一个的前缀相同的大于1,则表示这两个可以连接到一起,问M个字符串相连的方案数


若a  b可以合并,可以让他们相连,然后求在一个图中走m-1步的方案数,

两点之间所走的步数为m-1的不同走法有多少种——矩阵快速幂的经典问题

因为求不同方案--->去重

(在别人博客看到的,表示以前并不知道这个,既然有点像模板题,写写学习下)


#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>

using namespace std;

const int maxn = 55;
const int mod = 1e9+7;

int n, m, a[maxn];

struct Mat
{
    int s[maxn][maxn];
    Mat ()
    {
        memset(s, 0, sizeof(s));
    }
    Mat operator * (const Mat& b)
    {
        Mat ret;
        for (int k = 0; k < n; k++)
        {
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                    ret.s[i][j] = (ret.s[i][j] + 1LL * s[i][k] * b.s[k][j] % mod) % mod;
            }
        }
        return ret;
    }
};

bool work(int a,int b)
{
    char p[15], q[15];
    sprintf(p, "%d", a);
    sprintf(q, "%d", b);

    int l1 = strlen(p);
    int l2 = strlen(q);
    for(int i = 0; i < l1; i++)
    {
        int k = 0;
        while(i + k < l1 && k < l2 && p[i+k] == q[k])
        {
            k++;
        }
        if(i + k == l1 && k > 1)
            return true;
    }
    return false;
}

Mat solve()
{
    Mat lp;
    for(int i = 0; i < n; i++)
        for(int j = 0; j < n; j++)
        {
            if(work(a[i],a[j]))
                lp.s[i][j] = 1;
        }
    return lp;
}

Mat pow_mat(Mat x, int z)
{
    Mat ret;
    for (int i = 0; i < n; i++)
        ret.s[i][i] = 1;
    while (z)
    {
        if (z&1)
            ret = ret * x;
        x = x * x;
        z >>= 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;

        if (n == 0 || m == 0)
        {
            printf("0\n");
            continue;
        }
        Mat tp = solve();
        Mat tmp = pow_mat(tp,m-1);

        long long ans = 0;
        for(int i = 0; i < n; i++)
            for(int j = 0; j < n; j++)
                ans = (long long)(ans + tmp.s[i][j])%mod;
        printf("%I64d\n",ans);
    }
}


主要部分:

struct Matrix {  
    LL m[55][55];  
};  
Matrix init;  
  
Matrix MatrixMul(Matrix a, Matrix b){  
    Matrix c;  
    int i,j,k;  
    for(i=0;i<N;i++){  
        for(j=0;j<N;j++){  
            c.m[i][j]=0;  
            for(k=0;k<N;k++){  
                c.m[i][j]+=(a.m[i][k]*b.m[k][j]);  
                c.m[i][j]%=kmod;  
            }  
        }  
    }  
    return c;  
}  
  
Matrix QuickPow(Matrix m,int p){  
    Matrix b;  
    int i;  
    memset(b.m,0,sizeof b.m);  
    for(i=0;i<N;i++)  
        b.m[i][i]=1;  
    while(p){  
        if(p%2) b=MatrixMul(b,m);  
        p/=2;  
        m=MatrixMul(m,m);  
    }  
    return b;  
}  



【软件安装系列】Ubuntu+mysql5.7.27+Jira8.3.1+邮箱服务器配置+Confluence6.15.7安装经验和采坑总结 文章目录一、软件准备(百度云易被吞,就不放了)1.1 官网下载的新鲜的Jira和Confluence1.2 linux的jdk一份1.3 Jira和Confluence的破解程序或者破解包一份1.4 java的连接器一份二、安装过程1--java环境配置2.1 将下载下来的jdk包解压在/usr/local/java目录中2.2 写入环境变量三、安装过程2--mysql5.7.27环境配置3.1 ... 阅读详情

相关推荐

从原理到实践:MIPI D-PHY v1.2的HS-Deskew功能全解析(附时序图详解)

本文深入解析MIPI D-PHY v1.2的HS-Deskew功能,从技术背景到实现机制,详细介绍了其在2.5Gbps高速传输中的关键作用。通过时序图详解和实测数据,帮助工程师理解并应用这一技术,解决信号完整性问题,提升系统可靠性。

weixin_30300225的博客 307

hdu 5302 Connect the Graph(构造)

题目链接:hdu 5302 Connect the Graph 当w1或者是b1为奇数时,无解。其他情况下一定可以构造出一条链和多个节点对,只要保证两点之间没有重边就行了。一种间隔1为一对,另一种间隔2为一对。 #include #include #include using namespace std; int N; int jump(int p, int k)

不慌不忙、不急不躁 743

FPGA以太网通信实战(一):实现MDIO接口驱动,掌控PHY芯片的钥匙

本文介绍了以太网通信技术及其核心组件。首先概述了以太网的发展历程,从标准以太网(10Mbps)到万兆以太网(10Gbps)的技术演进。重点分析了以太网接口的两大核心部件:MAC控制器负责数据链路层协议处理,PHY芯片负责物理信号转换和连接管理。文章详细解读了MDIO接口规范,包括帧格式和读写时序,并以YT8531 PHY芯片为例,介绍了其寄存器配置方法。最后设计了一个FPGA实现方案,通过MDIO接口完成PHY芯片的软复位和状态监测功能,并利用LED指示灯实时显示网络连接速率。

weixin_64402689的博客 1660

HDU 5302(Connect the Graph- 构造)

Connect the Graph Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 456    Accepted Submission(s): 144 Special Judge Problem Description O

nike0good |Oier&ACMer | 熟能生巧 2658

Changer: Feature Interaction Is What You Need forChange Detection

还有“交换“交互是一种完全不需要参数和计算的操作,它是通过交换空间或通道维度上的双时态特征映射来实现的,交换的特征在经过后续的卷积或令牌混合时进行混合。方法二:提出了两种简单的交互策略,AD和特征“交换”,大量的实验表明,它们可以极大地提高MetaChanger的性能,特别是特征“交换”,即使嵌入到复杂的网络中或应用于具有挑战性的数据集。在这里,我们用虚线勾勒本文的重点。这是变化检测任务的基本问题,双时相图像提供了同一地区在不同时间点的图像数据,通过对比这两个时间点的图像,我们可以检测出该地区的变化。

yokon的博客 1619

在Keil下完成一个汇编程序的编写

在学习STM32的路上开始是学的C语言尚未进行对汇编进行学习,因此抽出时间来学习一下在keil下的汇编语言。

Liu-FE的博客 1万+

【HDU】 5302 Connect the Graph【构造】

传送门:【HDU】 5302 Connect the Graphmy  code:my~~code:#include <bits/stdc++.h> using namespace std ;typedef long long LL ; typedef unsigned long long ULL ;const int MAXN = 10005 ;int y[MAXN][2] ;void solve

poursoul 865

基于Arduino UNO的OLED显示器使用方法x2(Arduino系列五)

Arduino使用OLED显示模块可以实现串口数据显示,还可以与其他模块联合使用,实现实时显示开发板实时数据。

LNN0212的博客 4170

HDU多校 6395 Sequence (矩阵快速幂)(模板)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6395 思路:[p/n]的值是一段一段的, 每段的区间和p的因数有关,每个区间内是相等的。利用矩阵相乘的性质把p/n的值放入矩阵的幂运算中。再一段一段算即可。 坑点:当n大于p时,p的因数都小于n,所以要在p的因数序列末尾加入一个n,补充计算。 #include &amp;lt;cstdio&amp;gt; ...

凝望的博客 236

TensorFlow GPU版本安装步骤-Windows系统

本文由在Windows下安装TensorFlow GPU版本教程-优快云等整理得到。 目录 1、确认显卡是否支持CUDA 1.1 查看显卡信息 打开“设备管理器”,查看显卡信息,如下图所示: 由上图知,本电脑的显卡为NVIDIA Quadro P400. 1.2 查看支持CUDA的显卡 网址:https://developer.nvidia.com/cuda-gpus 经查询可知,该显卡支持CUDA,如下图所示: 2、安装CUDA 2.1 下载CUDA 网址:https://developer.nvi

x_lingyun的专栏 764

C++ 小游戏程序 (共七款)

C++编程小游戏_闪耀的天狼星的博客-优快云博客_游戏c++C++跑酷小游戏_闪耀的天狼星的博客-优快云博客。好玩的c++编程小游戏,共六款。代码】C++跑酷小游戏。

小天狼星_布莱克 的博客 3万+

hdu5302 Connect the Graph 含spj

Connect the Graph Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 81    Accepted Submission(s): 26 Special Judge Problem Description

fish_porridge的专栏 803

DRM遇到的实际问题及领悟(3)

DRM遇到的实际问题及领悟(3)

phmatthaus的专栏 635

2015 多校联赛 ——HDU5302(构造)

Connect the Graph Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 108Accepted Submission(s): 36 Special Judge Problem Descr...

diaocuiguo2493的博客 186

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

hdu 5411 多校——矩阵快速幂模板

#include #include #include using namespace std; const int N = 52; long long ans=0; struct Mat { int mat[N][N]; }; int num[N]; int n, m; Mat a; void init() { int i,j; int x,k; me

lanxuan365的专栏 413

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

2018 多校 HDU - 6395 矩阵快速幂

这题就是一个矩阵快速幂,但是后面还有一项,重点在对这个项的处理上面,关于这个项的处理,可以看另一篇blog(https://www.cnblogs.com/DynastySun/p/9462847.html),这上面有关于那个项的一些特点。我们可以观察多,这个项的变化规律,P/n(向下取整),当n越小的时候,这个值变化的越频繁,当n越大,这个值变化的越小。这就好办了,对于变化频...

WYW1996的博客 203

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

hdu 5656 CA Loves GCD(n个任选k个的最大公约数和)

CA Loves GCD    Accepts: 64    Submissions: 535  Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) 问题描述 CA喜欢是一个热爱党和人民的优秀同♂志,所以他也非常喜欢GCD(请在输入法中输入GCD

阳光下的泡沫 1957

poj 3904(莫比乌斯反演)

POJ 3904  题意: 从n个数中选择4个数使他们的GCD = 1,求总共有多少种方法 Sample Input 4 2 3 4 5 4 2 4 6 8 7 2 3 4 5 7 6 8 Sample Output 1 0 34 思路:先求出选择四个数所有的情况,C(4,n) = n * (n-1) * (n-2)

阳光下的泡沫 1842

hdu4549(费马小定理 + 快速幂)

M斐波那契数列F[n]是一种整数数列,它的定义如下: F[0] = a F[1] = b F[n] = F[n-1] * F[n-2] ( n > 1 ) 现在给出a, b, n,你能求出F[n]的值吗?   Input 输入包含多组测试数据; 每组数据占一行,包含3个整数a, b, n( 0   Output 对每组测试数据请输出一

阳光下的泡沫 1422

hdu 5607 BestCoder Round #68 (矩阵快速幂)

题意: graph    Accepts: 9    Submissions: 61  Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) 问题描述 在一个NN个点(标号11~nn),MM条边的有向图上,一开始我在点uu,每一步我会在当

阳光下的泡沫 1221

HDU2256(矩阵)

求(sqrt(2) + sqrt(3)) ^ 2n MOD 1024 强行盗图- -,这公式推得 。。 #include #include using namespace std; const int mod=1024; struct Matri { int a[2][2]; }; Matri Mat; Matri Mul(const Matri &A,const

阳光下的泡沫 1209

全排列hash-康拓展开

这是对很多全排列问题适用的方法,而且还能用于一些题目的判重 第一位是3,当第一位的数小于3时,那排列数小于321 如 123、 213 ,小于3的数有1、2 。所以有2*2!个。再看小于第二位2的:小于2的数只有一个就是1 ,所以有1*1!=1 所以小于321的{1,2,3}排列数有2*2!+1*1!=5个。所以321是第6个小的数。 2*2!+1*1!+0*0!就是康托展开。 例如

阳光下的泡沫 1204

POJ 3233 (矩阵)

题意:对于矩阵A,求A^1 + ...... + A^k 按照矩阵十大经典题的思路大致做了下。 在k为奇数时:  A^( k / 2+1)+ 1) * (A^1 + ....... A^(k/2)) + A^(k/2+1) k为偶数时:(A^(k/2) + 1 )* (A^1 + ................A^(n/2)) 但是超时了,应该是没二分的问题。 最开始试了下:

阳光下的泡沫 1050

hdu 5446(中国剩余+lucas+按位乘)

题意:c( n, m)%M    M = P1 * P2 * ......* Pk Lucas定理是用来求 c(n,m) mod p,p为素数的值。得出一个存余数数组,在结合中国剩余定理求值 其中有个地方乘积可能超范围,所以按位乘(数论方面薄弱啊,学习学习)。 #include #include #include #include #include using namesp

阳光下的泡沫 941

hdu 2254(矩阵)

题意:指定v1,v2,要求计算出在t1,t2天内从v1->v2的走法 思路:可以知道由矩阵求,即将其建图A,求矩阵A^t1 + ...... + A^t2.   A^n后,/*A.xmap[v1][v2]即是从v1到v2要n步 所以先预处理出A^1 -A^10000的情况,后面再注意下细节,计算即可. (每条道路走需要花一天的时间,且不能在某个城市停留,且t1=0时的走法数为0)

阳光下的泡沫 897

hdu 5392

Sample Input 2 3 1 3 2 6 2 3 4 5 6 1   Sample Output 2 6 题意:给一个转置求它的循环长度 题解:分解成循环求最小公倍数 #include #include #include #include #include using namespace std; typedef long lo

阳光下的泡沫 885
上一篇: 2015 多校联赛 ——HDU5302(构造)
下一篇: 2015 多校联赛 ——HDU5335(Walk out)
Tyuio28
博客等级 码龄11年 12粉丝 279原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值