UVA 11551 – Experienced Endeavour(矩阵高速幂)[通俗易懂]

UVA 11551 – Experienced Endeavour(矩阵高速幂)

大家好,又见面了,我是全栈君。

UVA 11551 – Experienced Endeavour

题目链接

题意:给定一列数,每一个数相应一个变换。变换为原先数列一些位置相加起来的和,问r次变换后的序列是多少

思路:矩阵高速幂,要加的位置值为1。其余位置为0构造出矩阵,进行高速幂就可以

代码:

#include <cstdio>#include <cstring>const int N = 55;int t, n, r, a[N];struct mat {    int v[N][N];    mat() {memset(v, 0, sizeof(v));}    mat operator * (mat c) {	mat ans;	for (int i = 0; i < n; i++) {	    for (int j = 0; j < n; j++) {		for (int k = 0; k < n; k++)		    ans.v[i][j] = (ans.v[i][j] + v[i][k] * c.v[k][j]) % 1000;	    }	}	return ans;    }};mat pow_mod(mat x, int k) {    mat ans;    for (int i = 0; i < n; i++) ans.v[i][i] = 1;    while (k) {	if (k&1) ans = ans * x;	x = x * x;	k >>= 1;    }    return ans;}int main() {    scanf("%d", &t);    while (t--) {	scanf("%d%d", &n, &r);	for (int i = 0; i < n; i++) scanf("%d", &a[i]);	int x; mat Mat;	for (int i = 0; i < n; i++) {	    scanf("%d", &x);	    int b;	    while (x--) {		scanf("%d", &b);		Mat.v[i][b] = 1;	    }	}	Mat = pow_mod(Mat, r);	for (int i = 0; i < n; i++) {	    int ans = 0;	    for (int j = 0; j < n; j++) {		ans = (ans + a[j] * Mat.v[i][j]) % 1000;	    }	    printf("%d%c", ans, (i == n - 1 ? '\n' : ' '));	}    }    return 0;}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115544.html原文链接:https://javaforall.net

(0)
上一篇 2022年2月2日 下午11:00
下一篇 2022年2月2日 下午11:00


相关推荐

  • mybatis返回对象_存储过程不能返回结果

    mybatis返回对象_存储过程不能返回结果论MyBatis返回结果集_返回实体类还是Map在更多的了解mybatis后发现不单单通过实体类可以直接返回数据,还可以直接返回一个Map结果集(resultType="java.util.Map"),如果是多条数据则返回一个List&lt;Map&lt;String,Object&gt;&gt;结果集。很多人会觉得发现,直接返回一个Map的话太方便了,什么映射什么的全都不用管,只用在sql书…

    2022年10月4日
    5
  • idea 2022激活码 csdn【2022最新】

    (idea 2022激活码 csdn)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~FZP9…

    2022年4月1日
    72
  • velocity定义_velocity模板

    velocity定义_velocity模板文章目录基本用法导入依赖1.基本用法1.1注释1.2替换变量1.3不解析,原文输出1.4调用对象方法指令setifelse基本用法导入依赖<dependency> <groupId>org.apache.velocity</groupId><artifactId>velocity</artifactId><version>1.7</version></dependency&

    2022年10月19日
    4
  • 五种IO模型详解

    五种IO模型详解在 Unix 网络编程 一书中提到了五种 IO 模型 分别是 阻塞 IO 非阻塞 IO 多路复用 IO 信号驱动 IO 以及异步 IO 下面就分别来介绍一下这 5 种 IO 模型的异同 1 阻塞 IO 模型 最传统的一种 IO 模型 即在读写数据过程中会发生阻塞现象 当用户线程发出 IO 请求之后 内核会去查看数据是否就绪 如果没有就绪就会等待数据就绪 而用户线程就会处于阻塞状态 用户线程交出 CPU 当数据就绪之后 内核会将数据

    2026年3月16日
    1
  • CSS Sprites新手教程

    CSS Sprites新手教程CSSSprites 新手教程刚开始认真学习 CSS 的时候 发现一个 CSSSprites 教程 后来群里的朋友问起这个问题 我很想把那个教程发给他看看 但是已经找不到了 所以就一直想自己写个 CSSSprites 教程 这几天写网页的时候恰巧用到了 CSSSprites 就写出来 分享给各位刚学习 CSS 的新手 相信你看懂了这个 理解和使用 CSSSprites 就不成问题了 首先解释下 CSS

    2026年3月16日
    3
  • 2×3卡方检验prism_SPSS之卡方检验

    2×3卡方检验prism_SPSS之卡方检验点击蓝字关注我们在介绍卡方检验之前,我们先了解一下非参数检验:非参数检验是指在母体不服从正态分布或分布情况不明确时,即不依赖母体分布的类型,用以检验数据是否来自同一个母体假设的一类检验方法,又称分布自由检验。那么什么是卡方检验呢?01卡方检验的定义卡方检验是一种极为典型的对总体分布进行检验的非参数检验方法。用于检验数据是否与某种概率分布的理论数字相吻合,进而推断样本数据是否来自该分布的…

    2022年5月17日
    68

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号