当前位置: 首页 > news >正文

一道线代题

这学期学习了线性代数,这样打 a 的时候遇到线代终于不坐牢了,但是水平还是不太够,得加训

打杭电时遇到的,问题描述很简单:

\(C_{i,j} = (a_i⊕b_j)(\varphi(a_i)+\varphi(b_i))\)

\((\det C)\mod 998244353\)

\(n\leq10^5,a_i,b_i\leq10^7\)

首先考虑一个基础的问题,令 \(D_{i,j} = a_ib_j\),求 \(rank(D)\)

很显然:

\[D = \begin{pmatrix}a_1 \\a_2 \\... \\a_n \end{pmatrix}\begin{pmatrix} b_1~b_2~...~ b_n \end{pmatrix} \]

考虑 \(D\) 的每一列 \(D_i\) ,均可表示为 \(D_i = kA\),故 \(rank(D) = 1\),当且仅当 \(n = 1\) 时,\(\det D \neq 0\)

现在进一步考虑这样的 \(D\), \(D_{i,j} = \sum^k_{p=1} a_{i,p}b_{j,p}\)

此时 \(D\) 的每一行 \(D_j\) 可表示为:

\[D_j = \begin{pmatrix}\sum^k_{p=1} a_{1,p}b_{j,p} \\\sum^k_{p=1} a_{2,p}b_{j,p} \\...\\\sum^k_{p=1} a_{n,p}b_{j,p} \end{pmatrix} = b_{j,1}\begin{pmatrix}a_{1,1} \\a_{2,1} \\... \\a_{n,1} \end{pmatrix} + b_{j,2}\begin{pmatrix}a_{1,2} \\a_{2,2} \\... \\a_{n,2} \end{pmatrix} ... + b_{j,k}\begin{pmatrix}a_{1,k} \\a_{2,k} \\... \\a_{n,k} \end{pmatrix} \]

我们可以看到,对于任意 \(D_j\),它都是固定的 \(k\) 个列向量的线性组合。

因此对于 \(D\) 的列向量,均可由大小为 \(k\) 的向量组 \(a\) 线性表出,即 \(D\) 的列向量组可由 \(a\) 线性表出。

于是有 \(rank(D) \leq rank(a) \leq k\)

根据上述分析,我们可以得到一个有用的推论,对于矩阵 \(D\),若对于所有 \(D_{i,j}\),均可表示为 \(k\) 个仅与 \(i\) 相关的量和仅与 \(j\) 相关的量的乘积的和,则 \(rank(D)\leq k\)

回到这道题,最直观的线性运算就是加法与数乘,异或在矩阵下并不容易直接处理,故考虑拆位。

\(a_i⊕b_j = \sum_{p=0}^{27} 2^p(a_{i,p}⊕b_{j,p}) = \sum_{p=0}^{27} 2^p(a_{i,p}+b_{j,p}-a_{i,p}b_{j,p})\)

因此:

\[C_{i,j} = \sum_{p=0}^{27}2^p(a_{i,p}+b_{j,p}-a_{i,p}b_{j,p})(\varphi(a_i)+\varphi(b_i)) = (a_i+b_j-\sum_{p=0}^{27}2^pa_{i,p}b_{j,p})(\varphi(a_i)+\varphi(b_i)) \]

我们可以看到,对于每个 \(C_{i,j}\),其至多被 <=2*2+27*2=58 个形如 \(a_ib_j\) 的项累加表示,因此 \(rank(D)\leq58\)

所以对于所有 \(n>58\)\(D\),必然有 \(rank(D)<n\),故 \(\det D\) 必然为 \(0\)

所以只需要对 \(n\leq58\)\(D\) 暴力算行列式即可。

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
const ll mod = 998244353;
const ll N = 5e5+5,V = 1e7+10;
ll n,a[N],b[N],c[111][111];
ll tot,vis[V],pri[V],phi[V];
void init(){phi[1] = 1;for(int i=2;i<=V-10;i++){if(!vis[i]) pri[++tot] = i,phi[i] = i-1;for(int j=1;j<=tot && 1ll*pri[j]*i<=V-10;j++){vis[pri[j]*i] = 1;if(i%pri[j] == 0) {phi[i*pri[j]] = phi[i]*pri[j];break;}phi[i*pri[j]] = phi[i]*phi[pri[j]];}}
}
ll qpow(ll a,ll p){ll res = 1;for(;p;p>>=1,a=a*a%mod) if(p&1) res = res*a%mod;return res;
}
ll calc(){ll ans = 1;for(int i=1;i<=n;i++){int j=i;while(!c[j][i] && j<=n) j++;if(j>n) return 0;swap(c[i],c[j]);ans = ans*c[i][i]%mod;ll inv = qpow(c[i][i],mod-2)%mod;for(int j=i+1;j<=n;j++){ll x = (mod-c[j][i]*inv%mod)%mod;for(int k=i;k<=n;k++){c[j][k] += c[i][k]*x%mod;if(c[j][k]>=mod) c[j][k] -= mod;}}}return ans;
}
void solve(){cin >> n;for(int i=1;i<=n;i++) cin >> a[i];for(int i=1;i<=n;i++) cin >> b[i];if(n>=60){cout << 0 << '\n';return ; }for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){c[i][j] = (a[i]^b[j])*(phi[a[i]]+phi[b[j]])%mod;}}cout << calc() << '\n';
}
int main(){cin.tie(0),cout.tie(0);ios::sync_with_stdio(0);int T = 1;cin >> T;init();while(T--) solve();return 0;
}

这题感觉是个不错的模型,应对这种 \(C_{i,j}\)\(i\) 一坨缝上 \(j\) 一坨的形式时,可以考虑把每一项复杂的运算化简为基本的加法和数乘,再用上文的推论减小 \(n\) 的范围。

http://www.gsyq.cn/news/1380640.html

相关文章:

  • 高效桌面宠物开发框架:DyberPet如何实现数字伙伴的个性化定制?
  • 2026年最新英语写作批改AI辅助工具 功能详解及使用注意事项
  • 终极Windows多显示器DPI缩放解决方案:告别显示模糊烦恼
  • 隐私安全天花板!2026树洞陪聊平台实测:0泄露0焦虑 - 时时资讯
  • MoviePilot智能消息推送:如何实现企业微信通知的时段精准控制
  • 地理空间机器学习库全解析:从TorchGeo到Raster Vision的实战指南
  • Topit:macOS窗口置顶神器,5分钟告别窗口遮挡烦恼
  • 2026年APV板式换热器厂家实力TOP榜 上海玛及机械稳居榜首 - damaigeo
  • 避坑指南:Neo4j CSV导入导出那些‘坑’(APOC插件配置、编码错误、文件路径问题一网打尽)
  • 语音钓鱼线下资金中转行为识别与金融场景防控研究 —— 基于韩国银行柜台拦截案例
  • EEG神经营销:图神经网络如何破解脑电数据不平衡与连接模式识别难题
  • linux+windows双系统,更换linux注意要点
  • Claude多方案对比评估怎么做?90%团队漏掉的第3层语义一致性验证,现在补救还来得及
  • Win11+Win7下Fiddler与Wireshark联调HTTPS解密全指南
  • QQ群数据采集终极指南:3分钟快速上手批量抓取工具
  • 百考通AI:源码图纸库,彻底解决各环节的创作难题
  • 【Nmap 保姆级教程】渗透神器从下载安装到实战全详解
  • 海南公司注册代理记账代办哪家好?2026年靠谱机构权威盘点(含评分) - GrowthUME
  • 2026年贵州卫校怎么选?贵阳护士学校、遵义卫校、毕节医学院校招生政策深度对比指南 - 优质企业观察收录
  • Java高效文件复制:缓冲流实战指南
  • Midjourney V6锐化失控?3步诊断+5组--sref/--stylize协同参数公式,立竿见影修复模糊与锯齿
  • SpringBoot WebClient 介绍
  • 老根家具建材口碑居然这么好?
  • 【安徽大学主办、每届提交后2-3个月检索】第五届半导体与电子技术国际研讨会(ISSET 2026)
  • 路径遍历高危漏洞检测报告
  • Cursor Pro解锁技术深度解析:从设备指纹突破到智能账户管理的开源解决方案
  • 2026年企业微信生态工具权威测评:谁在驱动真实的行业效率革命? - 行业产品测评专家
  • 如何在原神中解放双手:自动钓鱼、拾取与对话跳过的终极指南
  • 如何用YDFID-1色织物数据集快速构建工业级纺织品缺陷检测AI模型
  • Android应用签名难题终结者:Uber APK Signer 让你告别繁琐签名流程