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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • arm指令周期_arm指令sub

    arm指令周期_arm指令sub1.大部分算术运算和逻辑运算指令都是单周期的,例如加法、减法、位级运算和移位2.乘法指令根据操作数位数的不同,从2-5个周期都有可能。3.无条件跳转语句和跳转语句成功跳转,需要重新填充流水线,因此至少需要3个周期4.跳过条件不满足的指令只需要花1个周期(以上周期应该是指各指令包含的机器周期数)时钟周期:振荡周期,即CPU主频。机器周期:又称CPU周期,完…

    2022年8月31日
    6
  • DirectX修复工具强力修复实验包[通俗易懂]

    DirectX修复工具APISets强力修复实验包下载地址:https://pan.baidu.com/s/1viLPeKp8vtFCy8Pr1S9CWw密码:5d6n实验包使用说明:1、实验包仅支持DirectX修复工具V3.6.6版及以上版本。2、首先将上述下载的压缩包解压,得到“Data”文件夹(如下图):3、找到之前的DirectX修复工具的存放地址,将…

    2022年4月13日
    234
  • Npoi操作excel

    Npoi操作excel

    2021年8月20日
    67
  • 十三、外观模式—— 简化接口 #和设计模式一起旅行#

    我不想成为上帝或英雄,只想成为一棵树,为岁月而生长,不伤害任何人。 ——米沃什故事背景在英国体验了康桥的魅力,我挥一挥衣袖,不带走一片云彩,但是 英国的天空没有留下我的痕迹,但我曾去过。哈哈!从英国到法国,在浪漫的巴黎,我和设计模式MM感受到这个城市别样的风景,很是吸引人,我们决定在这里待一段时间在走。于是去政府部门办理一些手续,本来以为会花费很多时间的,因为之前办…

    2022年2月27日
    42
  • 解决mysql java.sql.SQLException: The server time zone value‘XXXXXX’ is unrecognized or represents…

    解决mysql java.sql.SQLException: The server time zone value‘XXXXXX’ is unrecognized or represents…个人错误总结解决java.sql.SQLException:Theservertimezonevalue‘XXXXXX’isunrecognizedorrepresentsmorethanonetimezone.1.报错截图使用的数据库是MySQL,驱动是6.0.3,这是由于数据库和系统时区差异所造成的,在jdbc连接的url后面加上serverTimezone=GMT

    2022年10月21日
    2
  • JDK 1.8 Stream Collectors groupingBy 例子[通俗易懂]

    JDK 1.8 Stream Collectors groupingBy 例子[通俗易懂]在这篇文章中,我们将向您展示如何使用java8 Stream Collectors 对列表分组,计数,求和和排序。1.GroupBy,CountandSort1.1Groupbya List anddisplaythetotalcountofit.(按列表分组,并显示其总数)Java8Example1.javapackagecom.mkyong.java8;i…

    2022年8月20日
    18

发表回复

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

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