首页 > 其他分享 >Xmas Contest 2021 D Determinant?

Xmas Contest 2021 D Determinant?

时间:2024-01-24 11:25:31浏览次数:26  
标签:Determinant const int 矩阵 2021 sigma Xmas define

Amitsur-Levitzki 定理,当 \(n\ge 2k\) 时,答案为 \(0\) 矩阵。

否则我们考虑答案矩阵的某一位 \(b_{i,j}\),其必然由某些路径 \(i=p_0\to p_1\to\ \cdots \to p_n=j\) 贡献而来,一条路径的贡献为 \(\text{sgn}(\sigma)\cdot \prod\limits_{i=1}^nA_{\sigma(i),p_{i-1},p_{i}}\)。

于是直接 dp,类似状压求行列式,记录当前 \(\sigma\) 中的 \(A\) 矩阵集合,dp 的值为一个矩阵,表示目前的 \(\text{sgn}(\sigma)\prod A_{\sigma(i)}\)。每次转移进行一次矩阵乘法。复杂度 \(O(2^nnk^3)=O(4^kk^4)\)。

// Problem: Determinant?
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/AT_xmascon21_d
// Memory Limit: 1 MB
// Time Limit: 5000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#include <bits/stdc++.h>
#define eb emplace_back
#define pb pop_back
#define mt make_tuple
#define mp make_pair
#define fi first
#define se second

using namespace std;
typedef long long ll;
typedef pair<int, int> pi;
typedef tuple<int, int, int> tu;
bool Mbe;

const int N = 20;
const int M = 10;
const int T = (1 << 15) + 5;
const int P = 998244353;

int n, m, S;
int a[N][M][M], f[T][M][M];

void solve() {
	cin >> n >> m;
	if (2 * m <= n) {
		for (int i = 0; i < m; i++, cout << '\n')
			for (int j = 0; j < m; j++)
				cout << 0 << ' ';
		return;
	}
	for (int i = 0; i < n; i++)
		for (int j = 0; j < m; j++)
			for (int k = 0; k < m; k++)
				cin >> a[i][j][k];
	S = (1 << n) - 1;
	for (int i = 0; i < m; i++) f[0][i][i] = 1;
	for (int s = 0; s < S; s++) {
		for (int i = 0; i < n; i++) {
			if ((s >> i) & 1) continue;
			int w = (__builtin_popcount(s >> i) & 1) ? (P - 1) : 1;
			for (int j = 0; j < m; j++) 
				for (int k = 0; k < m; k++)
					for (int l = 0; l < m; l++)
						(f[s | (1 << i)][j][k] += 1ll * f[s][j][l] * w % P * a[i][l][k] % P) %= P;
		}
	}
	for (int i = 0; i < m; i++, cout << '\n')
		for (int j = 0; j < m; j++)
			cout << f[S][i][j] << ' ';
}

bool Med;
int main() {
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	cerr << (&Mbe - &Med) / 1048576.0 << " MB\n";
	#ifdef FILE
		freopen("1.in", "r", stdin);
		freopen("1.out", "w", stdout);
	#endif
	int T = 1;
	// cin >> T;
	while (T--) solve();
	cerr << (int)(1e3 * clock() / CLOCKS_PER_SEC) << " ms\n";
	return 0;
}

标签:Determinant,const,int,矩阵,2021,sigma,Xmas,define
From: https://www.cnblogs.com/Ender32k/p/17984196

相关文章

  • 洛谷 P9843 [ICPC2021 Nanjing R] Paimon Sorting 题解
    Descirption给出一个排序算法(用伪代码表示):SORT(A)forifrom1tonforjfrom1tonifa[i]<a[j]Swapa[i]anda[j]算出对于一个序列\(A=a_1,a_2,\cdots,a_n\)的所有前缀\(A_k=a_1,a_2,\cdots,a_k\)(\(1\lek\len\)),\(\operatorname{SORT}(A_......
  • Office 2021:高效工作,轻松生活 mac/win版
    Office2021是微软公司推出的一款办公软件套件,包括Word、Excel、PowerPoint、Outlook等多个应用程序,是全球范围内广泛使用的办公软件之一。→→↓↓载Office2021mac/win首先,Office2021在功能上进行了许多改进和升级,使得用户可以更加高效地完成各种任务。其中最显著的特点是增......
  • NOIP2021
    NOIP2021来啦!Day0为了方便,我们提前一天便到了考点附近。出发之前,我们又在机房里呆了两个小时,大家都在忙着复习着诸如线段树等模板。两个小时的车程后,我们吃过饭,老师又把我们集中开会,跟我们讲了一堆注意事项。讲完之后,大家都睡了。Day1第一次打联赛,不免有些小紧张,毕竟这些题目......
  • P8112 [Cnoi2021] 符文破译 题解
    题目传送门思路先看数据范围,我们发现两个字符串的长度最大会达到\(5\times10^7\)。这立刻打消了我用暴力的想法。于是,我选择了用KMP模式匹配,这一个能够在线性时间内判定字符串\(A\)是否是字符串\(B\)的字串,并求出字符串\(A\)在字符串\(B\)中各次出现的位置。如......
  • P8512 [Ynoi Easy Round 2021] TEST_152 题解
    题目链接:[YnoiEasyRound2021]TEST_152题目比较抽象,翻译一下。就是有\(n\)个操作,每个操作为\((l_i,r_i,v_i)\)表示把长为\(m\)序列\(a\)的\([l_i,r_i]\)上的数覆盖为\(v_i\)。而查询为\([time_l,time_r]\),表示从\(time_l\)的操作开始执行,到\(time_r\)操作结......
  • 2020-2021 ICPC Southeastern European Regional Programming Contest (SEERC 2020)
    Preface最害怕的一集,徐神感冒身体不适只能口胡前半场,祁神中途也有事下机导致一段时间内只有我一个人在写题最后也是不负众望体现出没有队友我究竟是多么地彩笔,后面也索性开摆了直接后面3h梭哈写H题(主要写个假做法浪费很长时间)最后喜被卡常打完这场特意叫了一天休息,一是为了徐神......
  • The 2021 Sichuan Provincial Collegiate Programming Contest
    题目链接:The2021SichuanProvincialCollegiateProgrammingContestA.Chuanpai题意:定义每一张川牌包含两个数字x,y,并且1<=x<= y<=6,求牌面上数字之和为n的牌种类解题思路:签到,预处理枚举即可查看代码map<int,int>mp;voidinit(){ for(inti=1;i<=6;i......
  • [GFCTF 2021]web部分题解(更新中ing)
    [GFCTF2021]Baby_Web拿源码环节:打开环境(◡ᴗ◡✿)乍一看什么都没有,F12下没看到js文件,但是看到了出题师傅的提示:“源码藏在上层目录xxx.php.txt里面,但你怎么才能看到它呢?”这时候在思考文件在上层目录中,既然是目录下那就试一下dirsearch扫描先看看后台都有什么(这里就直接......
  • 2021 ICPC Southeastern Europe Regional Contest
    Preface这场打的挺好,感觉在题目难度不小的情况下能写出10题还是挺猛的可惜最后时间差一点不然甚至能再写出来一个EA.KingofStringComparison签到,本来徐神跟我说写个二分+Hash,然后我库库上去一顿写刚抄完板子就被赶下来了直接从后往前扫,记录距离当前最近的不同的位置出现......
  • 2020-2021 ACM-ICPC Latin American Regional Programming Contest J. Job Allocator
    Preface今天因为下午被强行拉回老家了,而且没带电脑回去然后就变成了徐神和祁神两个人写,我拿个手机在后面口胡了3h最后变成了在缺我一个人的前提下还能4h过10题的情况,感觉就算我在的话最多就是快点过H然后把剩下的时间拿去写个J这场因为没啥参与就不写整场的博客了,把赛后写的这......