Codeforces 757 C Felicity is Coming! 思维+STL

本文介绍了一种计算在特定条件下合理变换方法数量的算法。条件为:给定一系列健身房及其中的种类分布,在进行一种变换后,每个健身房内的种类数量不变。通过将种类映射到相同集合的方法来实现这一目标,并利用排列组合原理计算所有可能的变换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

点击打开链接

题意:变换是一个排列f,f[i]为把i变为f[i],(i<=1e6)
有n(n<=1e5)个gym,要求种类经过f变换后:每个gym中每个种类个数:变化前和变换后相等,问有多少种合理变换f?


容易发现:若x经过变换后为y 则每个gym中x个数是等于y的个数(不好算直接统计出相等的种类).->x所在的gym集合等于y所在的gym集合 (vector[i] 种类i的的gym集合 sort后即可比较)
//若把能相互变换的放入一个数据结构中,则该块方法数为S!(S为该块的个数),最后每块方法数相乘即可 

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=1e9+7;
const int N=1e6+20;
vector<int> a[N];//a[i]种类i的gym集合 
int main()
{
	int n,m;
	while(cin>>n>>m)
	{
		for(int i=1;i<=n;i++)
		{
			int num;
			scanf("%d",&num);
			while(num)
			{
				int x;
				scanf("%d",&x);
				a[x].push_back(i);//
				num--;
			}
		}
		sort(a+1,a+1+m);//为了比较种类所在集合是否相等 
		ll t=1,ans=1;		
		for(int i=2;i<=m;i++)
		{
			if(a[i]==a[i-1])
			{
				t++;
				ans=(ans*t)%mod;
			}
			else
			t=1;
		}
		cout<<ans<<endl;
		for(int i=1;i<=n;i++)
			a[i].clear();
	}
	return 0;
}




数据集介绍:神经元细胞核检测数据集 一、基础信息 数据集名称:神经元细胞核检测数据集 图片数量: - 训练集:16,353张 - 测试集:963张 分类类别: - Neuron(神经元细胞核):中枢神经系统的基本功能单位,检测其形态特征对神经科学研究具有重要意义。 标注格式: - YOLO格式,包含边界框坐标及类别标签,适用于目标检测任务 - 数据来源于显微镜成像,覆盖多种细胞分布形态和成像条件 二、适用场景 神经科学研究: 支持构建神经元定位分析工具,助力脑科学研究和神经系统疾病机理探索 医学影像分析: 适用于开发自动化细胞核检测系统,辅助病理诊断和细胞计数任务 AI辅助诊断工具开发: 可用于训练检测神经元退行性病变的模型,支持阿尔茨海默症等神经疾病的早期筛查 生物教育及研究: 提供标准化的神经元检测数据,适用于高校生物学实验室和科研机构的教学实验 三、数据集优势 大规模训练样本: 包含超1.6万张训练图像,充分覆盖细胞核的多样分布状态,支持模型深度学习 精准定位标注: 所有标注框均严格贴合细胞核边缘,确保目标检测模型的训练精度 任务适配性强: 原生YOLO格式可直接应用于主流检测框架(YOLOv5/v7/v8等),支持快速模型迭代 生物学特性突出: 专注神经元细胞核的形态特征,包含密集分布、重叠细胞等真实生物场景样本 跨领域应用潜力: 检测结果可延伸应用于细胞计数、病理分析、药物研发等多个生物医学领域
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值