ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2022-6-19 #1 CF1270I & CF1637H

2022-06-19 14:03:58  阅读:142  来源: 互联网

标签:19 bmod 矩阵 卷积 异或 CF1270I 2022 CF1637H oplus


每天都要能选出至少三道有意义的题,这样才算没有摆。

本地记录的话容易鸽掉,就放博客上了。(我博客是不是没啥人看啊)

001 CF1270I Xor on Figures

我们定义两个矩阵 \(A,B\) 的异或卷积 \(C\) 为:

\[C_{a,b}=\oplus_{(u+i)\bmod 2^k=a}\oplus_{(v+j)\bmod 2^k=b}A_{u,v}B_{i,j} \]

我们发现将所有操作放到一个矩阵 \(P\) 上,再令关键位置形成的矩阵为 \(Q\),那么我们需要 \(P\times Q=A\)。

可以证明,在异或卷积下,矩阵 \(A\) 存在逆元,其值为 \(A^{2^k-1}\)。

那么我们就是要求 \(A\times P^{2^k-1}\),但矩阵快速幂的时候暴力实现异或卷积肯定过不了。

发现 \(P^2\) 只有 \((2x_i\bmod 2^k,2y_i\bmod 2^k)\) 有值,因为 \(((x _i+x_j)\bmod 2^k,(y_i+y_j)\bmod 2^k)\) 会被 \((x_i,y_i),(x_j,y_j)\) 计算一次,\((x_j,y_j),(x_i,y_i)\) 计算一次,抵消了。

于是 \(P^{2^l}\) 也只有 \(O(t)\) 个位置有值,我们异或卷积的时候取这些位置出来计算即可,复杂度 \(O(4^kkt)\)。

#include<stdio.h>
const int maxn=1<<9;
int n,k,ans,m;
struct matrix{
	unsigned long long a[maxn][maxn];
	inline unsigned long long* operator [](const int &x){
		return a[x];
	}
	matrix operator *(matrix p){
		matrix res;
		for(int i=0;i<n;i++)
			for(int j=0;j<n;j++)
				res[i][j]=0;
		for(int i=0;i<n;i++)
			for(int j=0;j<n;j++)
				if(p[i][j])
					for(int u=0;u<n;u++)
						for(int v=0;v<n;v++)
							res[(u+i)%n][(v+j)%n]^=p[i][j]*a[u][v];
		return res;
	}
}A,B;
int main(){
	scanf("%d",&k),n=1<<k;
	for(int i=0;i<n;i++)
		for(int j=0;j<n;j++)
			scanf("%llu",&A[i][j]);
	scanf("%d",&m);
	for(int i=1,x,y;i<=m;i++)
		scanf("%d%d",&x,&y),B[x-1][y-1]=1;
	for(int i=0;i<k;i++)
		A=A*B,B=B*B;
	for(int i=0;i<n;i++)
		for(int j=0;j<n;j++)
			ans+=(A[i][j]!=0);
	printf("%d\n",ans);
	return 0;
}

002 CF1637H Minimize Inversions Number

标签:19,bmod,矩阵,卷积,异或,CF1270I,2022,CF1637H,oplus
来源: https://www.cnblogs.com/xiaoziyao/p/16390391.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有