C - Shuffle Permutation

这几天遇到了很多(2道)并查集维护连通关系的题。

此题把能够相互交换的行或者列用并查集维护,不难发现一个连通块内的点个数时cntcntcnt连通块内的行或者列可以两两交换,那么对答案的贡献是cnt!cnt!cnt!因此预处理,然后用并查集维护连通关系即可。

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<set>
#include<map>
#include<cmath>
#include<queue>
#include<random>
#include<bitset>
#include<string>
#include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<unordered_map>
#include<unordered_set>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int N=60;
const int mod=998244353;
int g[N][N];
int n,m;
int p[2*N],sz[2*N];
int find(int x) {return x==p[x]?x:p[x]=find(p[x]);}
int fact[2*N];
void merge(int x,int y)
{int px=find(x),py=find(y);if(px==py) return;p[px]=py;sz[py]+=sz[px];
}
int main()
{//IO;int T=1;//cin>>T;while(T--){cin>>n>>m;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++) cin>>g[i][j];fact[0]=1;for(int i=1;i<=2*n;i++) p[i]=i,sz[i]=1,fact[i]=1ll*fact[i-1]*i%mod;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){bool ok1=1,ok2=1;for(int k=1;k<=n;k++)if(g[i][k]+g[j][k]>m) ok1=0;for(int k=1;k<=n;k++)if(g[k][i]+g[k][j]>m) ok2=0;if(ok1) merge(i,j);if(ok2) merge(i+n,j+n);}ll res=1;for(int i=1;i<=2*n;i++)if(p[i]==i)res=res*fact[sz[i]]%mod;cout<<res<<'\n';}return 0;
}

ARC107——C - Shuffle Permutation相关推荐

  1. Matlab Tricks(二十六)—— 置乱(随机化)与恢复(shuffle/permutation restore)

    x = 1:10; n = length(x); perm = randperm(n);x_perm = x(perm);% x_perm 表示置乱后的结果 x_ori(perm) = x_perm; ...

  2. surprise库源码分析

    最近工作上需要使用到协同过滤,来计算相似度,因此根据https://blog.csdn.net/weixin_43849063/article/details/111500236的步骤对surpris ...

  3. numpy学习笔记之随机采样函数

    numpy的随机采样函数 np.random.choice(a, size=None,replace=None, p=None) 功能:Generates a random sample from a ...

  4. [WRECKCTF 2022] crypto,reverse,pwn部分WP

    国庆两天,一个比较容易的比赛.会的题不少.感觉到自信了. 目录 国庆两天,一个比较容易的比赛.会的题不少.感觉到自信了. crypto spin baby-rsa mtp prime token rs ...

  5. 深度卷积神经网络演化历史及结构改进脉络总结

    Table of Contents CNN基本部件介绍 1. 局部感受野 2. 池化 3. 激活函数 4. 全连接层 深度学习模型火的原因? 网络模型命名规则 最古老的的CNN LeNet5 ILSV ...

  6. [二] Numpy数据存取与函数

    Numpy数据存取与函数 一维和二维数据的存取 CSV文件, np.loadtxt(), np.savetxt() 多维数据的存取 a.tofile(), np.fromfile() np.save( ...

  7. 深度学习(7):基于LSTM算法的股票走势预测

    目标:基于LSTM网络实现对股票走势分析,将股票指数输入LSTM模型训练和推理,最后将判断结果进行输出. 一.原理 先了解RNN,参考博客 ​​​​​​​好好学习第三天:RNN与股票预测_流萤数点的博 ...

  8. numpy中的随机数函数详解

    作者学习中积累总结内容,转载请注明 np.random.* numpy随机数 一.生成器 二.简单随机数 三.分布随机数 四.排列 shuffle() permutation() choice() n ...

  9. Numpy.random中shuffle与permutation的区别(转)

    huffle与permutation的区别 函数shuffle与permutation都是对原来的数组进行重新洗牌(即随机打乱原来的元素顺序):区别在于shuffle直接在原来的数组上进行操作,改变原 ...

最新文章

  1. linux下git的简单使用
  2. Guava区间-Range
  3. grasshopper for rhino 6下载_从SU到Rhino——lumion批量种树
  4. codevs1079 回家
  5. java 监听 变量_[Java学习小记]使用PropertyChangeSupport来监听变量的变化
  6. java 布隆过滤器_牛逼哄哄的布隆过滤器,到底有什么用?
  7. Qt tableWidget导入\导出Excel表格 自用
  8. trailmakers未能连接服务器,Trailmakers联机版
  9. php mysql子查询,mysql子查询命令
  10. Kafka Metrics指标监控
  11. 马行走路线的测试用例设计
  12. struts2+freemarker+sitemesh乱码,解决了
  13. 【洛谷 SP8093】 JZPGYZ - Sevenk Love Oimaster(后缀自动机)
  14. python爬取网易评论
  15. 某内容管理系统最最最详细的代码审计
  16. php人机验证,89.人机验证(一) |《TDD 构建 Laravel 论坛笔记》| Laravel China 社区...
  17. build.prop文件详细赏析
  18. [转载] 深入理解Android系统网络架构
  19. 【问题解决】电脑能用QQ但是打不开网页
  20. IBM MessageBroker笔记系列(一)

热门文章

  1. 奥的斯服务器状态显示,奥的斯电梯调试服务器(俗称st)按键介绍
  2. php备份和恢复源码,PHP数据库备份还原类
  3. windows如何添加本机dns记录_运维必看!超清晰的 DNS 原理入门指南
  4. 数据结构——基于 Dijsktra 算法的最短路径求解
  5. alibaba实习生代码大赛
  6. Largest Rectangle in a Histogram (动态规划+奇思妙想单调栈)求最大矩状图面积
  7. python序列数据类型_Python 数据类型 之 序列类型
  8. HTMLCSS 超简单的前端设计入门-1!
  9. 数据结构---顺序查找和二分查找
  10. 深入理解 JVM Class文件格式(六)