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;}

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 2016跨时代意义物联网之年

    2016跨时代意义物联网之年

  • Java 介绍

    1 Java 介绍 Java的历史 Java的历史非常有趣。 Java最初是为交互式电视而设计的,但是对于当时的数字有线电视行业来说,它是太先进的技术。 Java的历史始于绿色团队…

  • java 取余和取整_Java取整、取余

    java 取余和取整_Java取整、取余参考链接:http://blog..net/wanlixingzhe/article/details/7359809参考链接:http://bbs..net/topics/390677448(6楼)参考链接:http://blog.sina.com.cn/s/blog_6940cab30101hji5.html最近在做一个计算的时候用到了取整取余的计算,这里对取整、取余、取模做一下总结~~~1、取…

  • Android Log日志

    Android Log日志

  • 小明加密通道进入_门禁系统跟闸机通道的区分是什么?功能是一样吗

    小明加密通道进入_门禁系统跟闸机通道的区分是什么?功能是一样吗门禁系统属于一卡通系统的范畴。它是以中央处理器为核心,由控制器、信息采集器和电控锁组成的控制网络系统。通过系统的信息读取和处理,实现了各种门锁开关的自动控制。根据信息阅读的方式可以分为:插卡式、感应式、图像检测式、双眼虹膜识别式等。他们的技术含量和体系工程预算顺序先后提高。且融合三辊闸、摆闸、翼闸等多种入口处监管设施,保持更智能。门禁用到ID和IC两种卡片,IC门禁有加密功能,存贮容量也大,广泛用…

  • php源码审计_代码审计入门cms

    php源码审计_代码审计入门cms目录一:代码审计的定义二:为什么选择PHP学习代码审计三:入门准备四:PHP常见的套路4.1 代码结构4.2 目录结构4.3参考项目五:如何调试代码六:代码审计的本质一:代码审计的定义通过阅读一些程序的源码去发现潜在的漏洞,比如代码不规范,算法性能不够,代码重用性不强以及其他的缺陷等等从安全人员的角度来看是:查找代码中是否存在安全问题,推断用户在操…

发表回复

您的电子邮箱地址不会被公开。

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