题目链接 http://codeforces.com/contest/757/problem/C

题意:给你n组数范围在1~m,可进行变换f(x)=y,就是将所有的x全变成y,最后

要满足变化后每组数的种类和原来一样。

拿样例来说

2 3

2 1 2

2 2 3

1在第一组里,2在第1,2组里,3在第3组里

1能变1或2,1变2后2只能变1,但是第二组里没有1所以不能变,

所以总共只有1种变法。

其实这题就是分集合该样例可分为3个集合

集合1={1},2={1,2},3={2}(集合表示出现在哪组里)如果集合完全相同那么结果就是乘上相同集合数的阶乘

这里可以sort一下vector数组,直接sort的结果是先按照首元素为第一优先级然后次元素次之,以此类推来拍的。

该样例sort后的结果是vc[1]={1},vc[2]={1,2},vc[3]={2};这样比较起来就方便了。

#include <iostream>
#include <algorithm>
#include <vector>
#define mod 1000000007
typedef long long ll;
using namespace std;
const int M = 1e6 + 10;
vector<int> vc[M]; int main() {
int n , m;
cin >> n >> m;
int g , gg;
for(int i = 0 ; i < n ; i++) {
cin >> g;
for(int j = 0 ; j < g ; j++) {
cin >> gg;
vc[gg].push_back(i + 1);
}
}
sort(vc + 1 , vc + 1 + m);
ll ans = 1 , k = 1;
for(int i = 2 ; i <= m ; i++) {
if(vc[i] == vc[i - 1]) {
k++;
ans = (ans * k) % mod;
}
else
k = 1;
}
cout << ans << endl;
return 0;
}

最新文章

  1. repo upload上传提交时发生remote rejected异常
  2. Mac安装windows虚拟机攻略
  3. C#笔记---动态类(Dynamic)应用
  4. MemberCached安装
  5. 【转】打造属于自己的Android Studio神器
  6. mysql case when用法
  7. Poj(2679),SPFA,邻接表(主流写法)
  8. 【转,未试】android 9path教程与去黑边
  9. 车牌识别LPR(六)-- 字符分割
  10. Json.Net序列化和反序列化设置
  11. Tomcat与Web服务器、应用服务器的关系
  12. Java8 Stream简介
  13. Caused by:org.hibernate.MappingNotFoundException:resouce:com/you/model/Monkey.hbm.xml not found
  14. pheatmap, gplots heatmap.2和ggplot2 geom_tile实现数据聚类和热图plot
  15. 设置eclipse联想功能
  16. jQuery根据元素值或元素下标来删除一个数组元素及数组对象方法列表
  17. 修改mysql默认端口
  18. django 2.1 配sql server 2008R2
  19. @SuppressLint("HandlerLeak"),或Handler使用有警告;
  20. ubuntu16.04LTS更换阿里源

热门文章

  1. 隐马尔科夫模型HMM介绍
  2. 传输层的TCP和UDP协议
  3. java课堂 动手动脑2
  4. 【Java例题】2.4求函数
  5. 12、面向对象的思想(OOP)
  6. eclipse插件——maven
  7. 给你的SpringBoot做埋点监控--JVM应用度量框架Micrometer
  8. 【openmp】for循环的break问题
  9. ZooKeeper系列(三)—— Zookeeper 常用 Shell 命令
  10. Winform改变Textbox边框颜色