首页 > 其他分享 >LY1090 [ 20230220 CQYC模拟赛IX T1 ] 矩阵

LY1090 [ 20230220 CQYC模拟赛IX T1 ] 矩阵

时间:2023-12-25 15:57:22浏览次数:39  
标签:IX 20230220 int LY1090 矩阵 ++ tp2 操作 include

题意

给定一个矩阵,你需要支持:

  • 循环左移
  • 循环右移
  • 循环下移
  • 循环上移
  • 按行置换求逆
  • 按列置换求逆

Sol

前 \(4\) 个操作是 \(trivial\) 的。

如何处理后两个操作?

考虑设一个三元组:\((x, y, A_{xy})\)。

每次操作,对于每一个元素都能确定操作后另外某个元素。

不难发现后两个操作就是交换 \(x, A_{x, y}\) 或 \(y, A_{x, y}\)。

时间复杂度:\(O(n ^ 2 + m)\)。

Code

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <array>
using namespace std;
#ifdef ONLINE_JUDGE

/* #define getchar() (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1 << 21, stdin), p1 == p2) ? EOF : *p1++) */
/* char buf[1 << 23], *p1 = buf, *p2 = buf, ubuf[1 << 23], *u = ubuf; */

#endif
int read() {
	int p = 0, flg = 1;
	char c = getchar();
	while (c < '0' || c > '9') {
		if (c == '-') flg = -1;
		c = getchar();
	}
	while (c >= '0' && c <= '9') {
		p = p * 10 + c - '0';
		c = getchar();
	}
	return p * flg;
}
void write(int x) {
	if (x < 0) {
		x = -x;
		putchar('-');
	}
	if (x > 9) {
		write(x / 10);
	}
	putchar(x % 10 + '0');
}
const int N = 1e3 + 5, M = 1e5 + 5;
char strbuf[M];

void Mod(int &x, int n) {
	if (x >= n) x -= n;
	if (x < 0) x += n;
}

array <array <int, N>, N> s, h;

int main() {
	int n = read(), m = read();
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= n; j++)
			s[i][j] = read();
	scanf("%s", strbuf + 1);
	array <int, 4> v = {0, 0, 0}, u = {0, 1, 2};
	for (int i = 1; i <= m; i++) {
		switch (strbuf[i]) {
		case 'R':
			Mod(v[1], n), v[1]++;
			break;
		case 'L':
			v[1]--, Mod(v[1], n);
			break;
		case 'D':
			Mod(v[0], n), v[0]++;
			break;
		case 'U':
			v[0]--, Mod(v[0], n);
			break;
		case 'C':
			swap(v[0], v[2]), swap(u[0], u[2]);
			break;
		case 'I':
			swap(v[1], v[2]), swap(u[1], u[2]);
			break;
		}
	}
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			array <int, 3> tp1 = {i, j, s[i][j]}, tp2;
			for (int k = 0; k < 3; k++)
				tp2[k] = tp1[u[k]];
			for (int k = 0; k < 3; k++)
				tp2[k] = v[k] + tp2[k];
			for (int k = 0; k < 3; k++)
				if (tp2[k] > n) tp2[k] -= n;
			h[tp2[0]][tp2[1]] = tp2[2];
		}
	}
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++)
			write(h[i][j]), putchar(32);
		puts("");
	}
	return 0;
}

标签:IX,20230220,int,LY1090,矩阵,++,tp2,操作,include
From: https://www.cnblogs.com/cxqghzj/p/17926246.html

相关文章

  • Codeforces1917E - Construct Matrix
    Codeforces1917E-ConstructMatrix首先考虑因为\(n\)为偶数,所以\(k\)为奇数时不可能满足条件。其次,如果\(4|k\),那么实际上在矩阵中一直放\(2\times2\)的全为\(1\)的矩阵就可以了。随后,如果\(k\equiv2\mod4\),那么可以证明如果\(k\ne2\landk\nen^2-2\),......
  • APISIX dubbo-proxy 实战
    APISIXAPISIX声称支持DubboProxy实践主要是APISIX官方网站上的这篇博客写的问题很大。博客上写的HTTP2DubboService实现类@ComponentpublicclassHTTP2DubboServiceImplimplementsHTTP2DubboService{@AutowiredprivateApplicationContextappContext......
  • @ConfigurationProperties(prefix = “xx.xx.xx“) 从配置文件中取值赋给类的属性
    @ConfigurationProperties(prefix=“xx.xx.xx“)从配置文件中取值赋给类的属性@ConfigurationProperties(prefix=“xx.xx.xx”)该注解的作用是从配置文件中取值赋给类的属性,当然也可以为方法的变量赋值/***服务访问URL*/@Component@ConfigurationProperties(value......
  • Pix4Dmapper空间三维模型的应用实例:GIS选址分析
      本文介绍基于无人机影像建模完成后的结果,利用ArcMap软件进行空间选址分析,从而实现空间三维模型应用的方法。目录1空间分析目标确立2基于基本约束条件的选址求解2.1坡度计算与提取2.2海拔提取2.3LAS数据初探2.4淹没分析2.5区域相交2.6面积约束3基于择优条件的选址求......
  • zabbix5.0监控postgresql13.6
    环境描述zabbix版本:5.0.12PG版本:13.6监控需求监控postgresql运行情况(非核心业务,主要监控挂没挂)监控流复制运行情况如有异常,则告警具体步骤在postgresql上创建监控用户,授权,并配置pg_hba.conf文件允许通过该用户去访问到zabbix的网站上下载监控脚本将脚本部署在po......
  • Zabbix6.0下部署开源的Zabbix报表系统ZbxTable
    Zabbix6.0下部署ZbxTable(开源的Zabbix报表系统)一、ZbxTable简单介绍ZbxTable是使用Go语言开发的一个开源的Zabbix报表系统目前已经推出ZbxTable2.1版本主要功能如下:按照主机类型,展示或导出主机资源资产管理,资源状态总览多用户、角色、用户组配置告警进行精确分发、屏蔽......
  • 大模型微调方法总结:LoRA、Adapter、Prefix-tuning、P-tuning、Prompt-tuning
    随着深度学习技术的不断发展,大型预训练模型已成为许多任务的重要工具。然而,微调(finetuning)这些大模型以适应特定任务是一个复杂且计算密集型的过程。本文将重点介绍五种不同的微调方法:LoRA、Adapter、Prefix-tuning、P-tuning和Prompt-tuning,并对它们进行总结。LoRA(LearnedRepre......
  • Maix II Dock gpio子系统点亮LED学习
    一、Linux的gpio子系统1、Linux内核提供pinctrl子系统,目的为了统一各soc厂商的pin引脚管理;2、pinctrl子系统提供的功能①、管理系统中所有可控制的pin引脚:在系统初始化时候,枚举所有可控制的pin,并标识这些pin;②、管理这些pin的复用功能:配置若干引脚组......
  • ● Zabbix——操作系统加入
    zabbix-get用户测试server端是否可以连通agent的key,并取回值。安装:yuminstallzabbix-get如果不知道路径,可以通过下方命令查找。find/-namezabbix_get安装完成后,可以下面命令来测试是否可以连通agent-s--host:指定客户端主机名或者IP-p--port:客户端端口,默认10050-I......
  • 使用Zabbix监控openstack的系统资源
    1概述OpenStack是一个开源的云计算管理平台项目,是一系列软件开源项目的组合。由NASA(美国国家航空航天局)和Rackspace合作研发并发起,以Apache许可证(Apache软件基金会发布的一个自由软件许可证)授权。OpenStack为私有云和公有云提供可扩展的弹性的云计算服务。项目目标是提供实施......