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

2024ICPC网络赛第一场C. Permutation Counting 4(线性代数)

题目链接

题目大意:给你n个范围[ l i , r i l_i,r_i li,ri],每个位置可以在这个范围中选择一个数,然后形成排列1到n的排列p。问p的所有情况的个数的奇偶性。

一个很妙的行列式转化,纯纯的线性代数。
首先,我们把p的总数表示出来。设矩阵 a i , j a_{i,j} ai,j,表示的是第 i 个 i个 i位置的是否可以表示 j j j。则p的所有可能为 ∑ p Π i = 1 n a i , P i \sum\limits_{p}\mathop{\Pi}\limits_{i=1}^{n}a_{i,Pi} pi=1Πnai,Pi
其中p表示所有排列方式的总和。发现这是近似于矩阵a的行列式的值,不过去掉了其正负号。(在取模2的影响下,综合的加减没有影响)也就是说,只要我们求矩阵 a a a的行列式的值 m o d 2 mod\ 2 mod 2,就可以解出最终解。
根据矩阵的性质,矩阵的行列式 m o d 2 mod\ 2 mod 2 0 0 0,等价于该矩阵 m o d 2 mod\ 2 mod 2下不可逆,也等价于该矩阵 m o d 2 mod\ 2 mod 2下的每一行的向量存在线性相关,也就是存在其中一个向量可以被其它向量表示。

至此,我们终于该题从看不懂的样子转化成了看起来像人话的子问题了。让我们解决这个子问题。每一个位置的向量[ l i , r i l_i,r_i li,ri]我们可以通过 r i − ( l i − 1 ) r_i-(l_{i}-1) ri(li1)表示,然后通过并查集判断出该向量能否通过其它向量表示。

int n,m;int pre[1000005];int find (int x){if(pre[x]==x)return x;else return pre[x]=find(pre[x]);
}void icealsoheat(){cin>>n;for(int i=0;i<=n;i++)pre[i]=i;int ans=1;for(int i=1;i<=n;i++){int l,r;cin>>l>>r;l=find(l-1);r=find(r);if(l==r){ans=0;// break;}else{pre[l]=r;}}cout<<ans<<"\n";}

相关文章:

  • 【程序员必读】近年来编程提效工具大合集。小白必看!
  • 9月26日day16
  • 望繁信科技CTO李进峰受邀在上海外国语大学开展流程挖掘专题讲座
  • Linux 如何发送带有 RequestBody 的 POST 请求
  • 影刀RPA实战:java结合影刀同步采购订单数据
  • IDEA2020运行项目时不从配置的maven仓库找jar包,从C盘默认路径下找jar包
  • C++日期类实现
  • 【Python语言初识(五)】
  • linux修改命令别名的方式
  • 前端大模型入门:Transformer.js 和 Xenova-引领浏览器端的机器学习变革
  • ——快速排序
  • SpringCloud Gateway 打印请求响应日志、跨域全局配置
  • 2024!再见前端!
  • 网络编程(8)+字节序处理
  • Redis 五大基本数据类型及其应用场景进阶(缓存预热、雪崩 、穿透 、击穿)
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • [数据结构]链表的实现在PHP中
  • 2017 前端面试准备 - 收藏集 - 掘金
  • Fastjson的基本使用方法大全
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • Otto开发初探——微服务依赖管理新利器
  • WePY 在小程序性能调优上做出的探究
  • 汉诺塔算法
  • 好的网址,关于.net 4.0 ,vs 2010
  • 前端面试之闭包
  • 日剧·日综资源集合(建议收藏)
  • 我从编程教室毕业
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • 怎么将电脑中的声音录制成WAV格式
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (二)换源+apt-get基础配置+搜狗拼音
  • (转)为C# Windows服务添加安装程序
  • .dwp和.webpart的区别
  • .NET 5种线程安全集合
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .net dataexcel 脚本公式 函数源码
  • .NET 反射的使用
  • .NET 回调、接口回调、 委托
  • .Net 垃圾回收机制原理(二)
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .NET成年了,然后呢?
  • .Net中wcf服务生成及调用
  • .pyc文件还原.py文件_Python什么情况下会生成pyc文件?
  • /proc/stat文件详解(翻译)
  • :中兴通讯为何成功
  • @DataRedisTest测试redis从未如此丝滑
  • @RequestBody与@ModelAttribute
  • @RequestBody与@ResponseBody的使用
  • @拔赤:Web前端开发十日谈
  • [ vulhub漏洞复现篇 ] GhostScript 沙箱绕过(任意命令执行)漏洞CVE-2019-6116
  • [ 手记 ] 关于tomcat开机启动设置问题
  • [ 网络基础篇 ] MAP 迈普交换机常用命令详解