2021 ICPC济南 J Determinant
题意就是给定一个矩阵,然后给出他的行列式的绝对值,这个值是精确的,然后让我们判断行列式的正负。
思路来源:一个Acmer
首先做这个题要明白一个性质才可以做,一个数和它的相反数对一个奇数的取模一定不同,因此对于这个题而言,我们只需要选一个模数然后求行列式的值然后与给定的精确值取模后的结果相比较即可,也就是说如果我们算出来的值与给定值相同,那么说明他俩同号,否则说明异号,然后来证明这个性质:
任意一对非\(0\)的相反数,有\(x_1 \not\equiv x_2 (\mod p)\),\(p\)为奇数,且\(x_1 \mod p \neq 0\),\(x_2 \mod p \neq 0\)。
&x_1 + x_2 = 0\\
=>&(x_1 + x_2) \mod p = 0\\
=>&(x_1 \mod p + x_2 \mod p) \mod p = 0 \,\,\,\,\, (1)\\
\end{aligned}
\]
假设\(x_1 \equiv x_2 (\mod p)\),那么令\(t_1 = x_1 \mod p\),\(t_2 = x_2 \mod p\),那么则有\(t_1 = t_2\),并且\(t_1 < p\),\(t_2 < p\)。
那么得知:
- \(t_1 + t_2\)为偶数
- \(t_1 + t_2 < 2 \times p \,\,\,\,\, (2)\)
而把\(t_i (i = 1, 2)\)代入上面式子\((1)\)得\((t_1 + t_2) \mod p == 0\),那么说明\((t_1 + t_2) = kp\),由\((2)\)得知\(0 < k < 2\),那么\(k = 1\),即\((t_1 + t_2) = p\),又因为\(p\)是奇数,而\((t_1 + t_2)\)是偶数,所以矛盾。
规则
- 矩阵转置,行列式不变
- 矩阵行(列)交换,行列式取反
- 矩阵行(列)相加减,行列式不变
- 矩阵行(列)所有元素同时乘以一个数,行列式等比例变大
// Problem: P7112 【模板】行列式求值
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/P7112
// Memory Limit: 64 MB
// Time Limit: 2000 ms
//
// Powered by CP Editor (https://cpeditor.org)
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N = 110, Mod = 1e9 + 7;
int a[N][N];
int n;
LL qmi(LL a, LL b, LL Mod) {
LL res = 1;
while (b) {
if (b & 1) res = res * a % Mod;
b >>= 1;
a = a * a % Mod;
}
return res % Mod;
}
LL Guass() {
LL det = 1;
for (int i = 1; i <= n; i++) { //枚举列
int k = i;
for (int j = i + 1; j <= n; j++) //把最大的一行放到最上边
if (abs(a[j][i]) > abs(a[k][i])) k = j;
if (abs(a[k][i]) == 0) { //如果斜线有0,结果就是0
det = 0;
break;
}
swap(a[i], a[k]); //把最大的一行放到最上边
if (i != k) det = -det; //如果有行交换,行列式取反
det = (1ll * det * a[i][i] % Mod + Mod) % Mod; //结果贡献
for (int j = i + 1; j <= n; j++) {
a[i][j] = 1ll * a[i][j] * qmi(a[i][i], Mod - 2, Mod) % Mod; //将每行的首位数变为1,这里就是取模
}
for (int j = 1; j <= n; j++) {
if (j != i && a[j][i]) {
for (int l = i + 1; l <= n; l++) {
a[j][l] = (a[j][l] - 1ll * a[i][l] * a[j][i] % Mod + Mod) % Mod;
}
}
}
}
return det;
}
int main() {
int t;
cin >> t;
while (t--) {
cin >> n;
string s;
cin >> s;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
cin >> a[i][j];
}
}
LL res = s[0] - '0';
for (int i = 1; i < s.size(); i++) {
res = (res * 10 % Mod + s[i] - '0') % Mod;
}
puts(res == Guass() ? "+" : "-");
}
return 0;
}
2021 ICPC济南 J Determinant的更多相关文章
- 2021ICPC网络赛第一场部分题解-The 2021 ICPC Asia Regionals Online Contest (I)
写在前面 本来应该6题的,结果不知道哪个铸币发了H的clar,当即把我们的思路转向三维几何上.当时我们还在想这三维计算几何的正确率有点太高了还在感叹ICPC选手的含金量,直到赛后我才知道这H题的铸币出 ...
- 2018-2019 ICPC, NEERC J. Streets and Avenues in Berhattan(DP)
题目链接:https://codeforc.es/contest/1070/problem/J 题意:给出一个长度为 k 的字符串,选出 n 个和 m 个不同位置的字符构成两个字符串,使得两个字符串相 ...
- 2021 ICPC Gran Premio de Mexico 2da Fecha部分题题解
前面的水题,在队友的配合下,很快就拿下了,剩下几道大毒瘤题,一直罚座三个小时,好让人自闭...但不得不说,这些题的质量是真的高! H. Haunted House 首先看这个题,大眼一扫,觉得是某种数 ...
- 15-16 ICPC europe J Saint John Festival (graham扫描法+旋转卡壳)
题意:给n个大点,m个小点$(n<=1e5,m<=5e5),问有多少个小点,存在3个大点,使小点在三个大点组成的三角形内. 解题思路: 首先,易证,若该小点在某三大点行成的三角形内,则该小 ...
- 2021 ICPC 江西省赛总结
比赛链接:https://ac.nowcoder.com/acm/contest/21592 大三的第一场正式赛,之前的几次网络赛和选拔赛都有雄哥坐镇,所以并没有觉得很慌毕竟校排只取每个学校成 ...
- 【2021 ICPC Asia Jinan 区域赛】 C Optimal Strategy推公式-组合数-逆元快速幂
题目链接 题目详情 (pintia.cn) 题目 题意 有n个物品在他们面前,编号从1自n.两人轮流移走物品.在移动中,玩家选择未被拿走的物品并将其拿走.当所有物品被拿走时,游戏就结束了.任何一个玩家 ...
- 2021 icpc 沈阳 I 【分式线性变换的保交比性】
分式线性变换的保交比性 对于分式线性变换,具有保交比性 应用 在复数域下,存在分式线性变换,给定三个输入和输出,再给定第四个输入,求其在这个分式线性变换下的输出. https://codeforces ...
- CCPC、Petrozavodsk Camp、OpenCup 题解汇总
省赛 \([\text{2021.11.30}]\) 2021 Jilin Collegiate Programming Contest 全部完成. \([\text{2021.12.25}]\) 2 ...
- 线性代数-矩阵-【1】矩阵汇总 C和C++的实现
矩阵的知识点之多足以写成一本线性代数. 在C++中,我们把矩阵封装成类.. 程序清单: Matrix.h//未完待续 #ifndef _MATRIX_H #define _MATRIX_H #incl ...
- JavaSE基础之矩阵运算
JavaSE基础之矩阵运算 1.矩阵类:Matrix.java 包括矩阵的加.乘运算,行列式的求解,最大最小元素等 package cn.com.zfc.help; import java.text. ...
随机推荐
- Nginx深入:nginx功能模块、目录结构及配置文件详解
Nginx功能模块说明 1.Nginx 核心功能模块(Core functionality) Nginx核心功能模块负责Nginx的全局应用,主要对应主配置文件的核心层(Main层)和事件(Event ...
- 《高级程序员 面试攻略 》RocketMQ 如何保证顺序性
RocketMQ 提供了一种称为顺序消息的机制来确保消息的顺序性.下面是一些关键的方法和概念: 1. 顺序消息:顺序消息是指在发送和消费过程中,消息按照特定的顺序进行处理.RocketMQ 通过将消息 ...
- ChatGPT应用篇:如何快速生成精美PPT提高工作效率-附资料下载
一.ChatGPT生成markdown源代码 问: 我想做一份ChatGPT变现方法的PPT,请生成丰富的教学展示内容,因为生成PPT是需要MarkDown格式的,请您输出Markdown格式的内容 ...
- Linux 内核音频子系统调试
debugfs 文件系统 debugfs 可以为 Linux 内核各个模块的分析调试,提供许多信息,如音频子系统的 ASoC,以及 tracing 等.debugfs 文件系统可以通过命令行工具挂载, ...
- 详解 canal 同步 MySQL 增量数据到 ES
canal 是阿里知名的开源项目,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费. 这篇文章,我们手把手向同学们展示使用 canal 将 MySQL 增量数据同步到 ES . ...
- DevOps |研发效能之环境、程序、配置、SQL变更管理
本文主要是讲如何建立有效的环境.程序.配置.SQL变更和管理平台. 几天前和一个朋友聊到环境.程序的配置变更,SQL变更和整个上线流程.之前我们在这块也做了很多,有做的好的也有做的一般的,借机都总结 ...
- 文心一言 VS 讯飞星火 VS chatgpt (90)-- 算法导论8.3 3题
三.用go语言,利用归纳法来证明基数排序是正确的.在你所给出的证明中,在哪里需要假设所用的底层排序算法是稳定的? 文心一言: 基数排序是一种非比较型整数排序算法,其通过在每一位上进行比较来排序.基数排 ...
- 钉钉旧版服务端SDK支持异步方法的升级改造
最近项目中需要对接钉钉,有些钉钉 API 的访问需要使用旧版服务端 SDK 才能搞定,但是这个 SDK 使用的还是 .NET Framework 2.0 框架,不能跨平台部署,也不支持 async\a ...
- ISO/OSI七层模型的分层与作用
ISO/OSI的七层模型 第七层:应用层 为用户提供服务,给用户一个操作界面,如window的图形界面,Linux的命令行: 第六层:表示层 数据提供表示:把01二进制转换为图像数字等用户可以看懂的内 ...
- 基于AvaSpe 2048测定物体的光谱曲线
本文介绍基于AvaSpec-ULS2048x64光纤光谱仪测定植被.土壤等地物高光谱曲线的方法. AvaSpec是由荷兰著名的光纤光谱仪器与系统开发公司Avantes制造的系列高性能光谱仪,广 ...