考虑到年份数很小,只有 \(6\),所以可以 \(2^6\) 来枚举子集,确定流量指数对应相同的位置,然后通过哈希和排序来计算相同的方案数。

但是这样计算出的是大于等于子集元素个数的方案数,所以还需要通过容斥来得到恰好为 \(k\) 的方案数。设子集元素个数为 \(num\),其容斥系数为 \((-1)^{num-k}\binom{num}{k}\),还需乘上组合数的原因是相同个数恰好为 \(num\) 的方案数对相同个数大于等于 \(k\) 的方案数的贡献为 \(\binom{num}{k}\)。

为了防止被卡,我这里用了双哈希来实现。

\(code:\)

#include<bits/stdc++.h>
#define maxn 100010
#define p1 998244353
#define p2 1000000007
#define b1 131
#define b2 137
using namespace std;
typedef long long ll;
template<typename T> inline void read(T &x)
{
x=0;char c=getchar();bool flag=false;
while(!isdigit(c)){if(c=='-')flag=true;c=getchar();}
while(isdigit(c)){x=(x<<1)+(x<<3)+(c^48);c=getchar();}
if(flag)x=-x;
}
ll n,k,ans;
ll a[maxn][10],C[10][10];
bool tag[6];
struct node
{
ll h1,h2;
}t[maxn];
bool cmp(const node &a,const node &b)
{
if(a.h1==b.h1) return a.h2<b.h2;
return a.h1<b.h1;
}
void init()
{
for(int i=0;i<=6;++i) C[i][0]=1;
for(int i=1;i<=6;++i)
for(int j=1;j<=i;++j)
C[i][j]=C[i-1][j]+C[i-1][j-1];
}
ll calc(int s)
{
for(int i=1;i<=n;++i) t[i].h1=t[i].h2=0;
for(int i=1;i<=n;++i)
{
for(int j=1;j<=6;++j)
{
t[i].h1=(t[i].h1*b1%p1+a[i][j]*tag[j])%p1;
t[i].h2=(t[i].h2*b2%p2+a[i][j]*tag[j])%p2;
}
}
sort(t+1,t+n+1,cmp);
ll cnt=0,sum=0;
for(int i=2;i<=n;++i)
{
if(t[i].h1==t[i-1].h1&&t[i].h2==t[i-1].h2) cnt++,sum+=cnt;
else cnt=0;
}
return sum;
}
int main()
{
read(n),read(k),init();
for(int i=1;i<=n;++i)
for(int j=1;j<=6;++j)
read(a[i][j]);
for(int s=0;s<=63;++s)
{
int num=0;
for(int i=1;i<=6;++i)
{
if(s&(1<<(i-1))) num++,tag[i]=true;
else tag[i]=false;
}
if(num<k) continue;
ll val=calc(s)*C[num][k];
if((num-k)&1) ans-=val;
else ans+=val;
}
printf("%lld",ans);
return 0;
}

最新文章

  1. 文件IO操作..修改文件的只读属性
  2. ***CodeIgniter集成微信支付(转)
  3. STL之multiset
  4. 313. Super Ugly Number
  5. Jordan Lecture Note-5: Kernels
  6. zabbix 通过key 获取
  7. java学习(三) java 中 mongodb的各种操作
  8. 微信小程序腾讯云php后台解决方案
  9. JVM 线上故障排查基本操作
  10. HBuilderX——编译失败:HBuilderX 安装目录不能包括 ( 等特殊字符
  11. Linux实战教学笔记49:Zabbix监控平台3.2.4(一)搭建部署与概述
  12. 捕获数据中的某个序列---verilog
  13. 2017 ACM/ICPC(西安)赛后总结
  14. jsp 修饰 Request 及Response
  15. Linux 用户管理【UID和GID】
  16. 超人前传第一至十季/全集Smallville迅雷下载
  17. PHP中const和define()定义常量的细节区别
  18. ul li剧中对齐
  19. HDU1789时间贪心
  20. 用 TensorFlow 实现 SVM 分类问题

热门文章

  1. 探索ADC的原理(自制3位并行比较型ADC)
  2. java 虚拟机指令重新排序
  3. 从零开始实现ASP.NET Core MVC的插件式开发(八) - Razor视图相关问题及解决方案
  4. Oracle Solaris 10图文安装
  5. Python3笔记006 - 2.3 变量
  6. C++栈(stack)、队列(queue)、链表(list)的常用函数
  7. 「疫期集训day0」启程
  8. 手把手教你玩转Git
  9. 11.unity3d 摄像机快速定位到Scene视角
  10. mybitis下choose..when. otherwise条件不起作用