欢迎访问~原文出处——博客园-zhouzhendong

去博客园看该题解


题目传送门 - BZOJ3198


题意概括

  有n(1<=n<=100000)组数据,每组数据6个数。

  现在问有几对数据,满足其数字相同的个数恰好为k。

  0<=k<=6


题解

  首先暴搜是不行的。

  然后我们发现可以哈希+容斥。

  对于有至少有x个数字相同的情况,我们可以枚举+hash解决(这个很简单,不用说了吧)。

  然后是最关键的。

  假设ans[i]表示至少有i个相同的情况总数。

  那么会有重复:

  比如某4个数相同,那么在其相应的ans[3]中,有一部分值是这4个数的排列。

  比如某两组数据的第1,2,3,4个数字相等,那么对于1,2,3相等,1,2,4相等,1,3,4相等,2,3,4相等都算了一遍,所以ans[3]要减掉ans[4]*C(4,3)

  那么同理,所有的从大到小减一减,然后就得出了答案。


代码

#include <cstring>
#include <algorithm>
#include <cstdio>
#include <cmath>
#include <cstdlib>
using namespace std;
typedef long long LL;
const int N=100005;
LL MOD=1000000007,MOD2=998244353,Ti=23333,Ti2=65119;
int n,k;
LL a[N][6],ans[6],C[10][10],v[N],v2[N];
int cnt1(int x){
int ans=0;
while (x)
ans+=x&1,x>>=1;
return ans;
}
LL solve(int k){
LL ans=0;
for (int i=0;i<(1<<6);i++){
if (cnt1(i)!=k)
continue;
for (int j=1;j<=n;j++){
v[j]=v2[j]=0;
for (int k=0;k<6;k++)
if (i&(1<<k))
v[j]=(v[j]*Ti+a[j][k])%MOD,v2[j]=(v2[j]*Ti2+a[j][k])%MOD2;
v[j]+=v2[j]*2033333333;
}
sort(v+1,v+n+1);
v[n+1]=v[n]+1;
int prev=1;
for (int j=2;j<=n+1;j++)
if (v[j]!=v[j-1])
ans+=1LL*(j-prev)*(j-prev-1)/2,prev=j;
}
return ans;
}
int main(){
scanf("%d%d",&n,&k);
for (int i=1;i<=n;i++)
for (int j=0;j<6;j++)
scanf("%lld",&a[i][j]);
for (int i=0;i<=6;i++)
ans[i]=solve(i);
memset(C,0,sizeof C);
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];
for (int i=6;i>=1;i--)
for (int j=0;j<i;j++)
ans[j]-=ans[i]*C[i][j];
printf("%lld\n",ans[k]);
return 0;
}

  

BZOJ3198 [Sdoi2013]spring 哈希 容斥原理的更多相关文章

  1. bzoj3198[Sdoi2013]spring 容斥+hash

    3198: [Sdoi2013]spring Time Limit: 40 Sec  Memory Limit: 256 MBSubmit: 1143  Solved: 366[Submit][Sta ...

  2. BZOJ3198[SDOI2013]SPRING

    Description Input Output Sample Input 3 3 1 2 3 4 5 6 1 2 3 0 0 0 0 0 0 4 5 6 Sample Output 2 HINT 题 ...

  3. BZOJ 3198: [Sdoi2013]spring [容斥原理 哈希表]

    3198: [Sdoi2013]spring 题意:n个物品6个属性,求有多少不同的年份i,j满足有k个属性对应相等 一开始读错题了,注意是对应相等 第i个属性只能和第i个属性对应 容斥一下 \[ 恰 ...

  4. BZOJ_3129_[Sdoi2013]方程_组合数学+容斥原理

    BZOJ_3129_[Sdoi2013]方程_组合数学+容斥原理 Description 给定方程     X1+X2+. +Xn=M 我们对第l..N1个变量进行一些限制: Xl < = A ...

  5. bzoj 3198 [Sdoi2013]spring(容斥原理+Hash)

    Description Input Output Sample Input 3 3 1 2 3 4 5 6 1 2 3 0 0 0 0 0 0 4 5 6 Sample Output 2 HINT [ ...

  6. 3198: [Sdoi2013]spring【容斥原理+hash】

    容斥是ans= 至少k位置相等对数C(k,k)-至少k+1位置相等对数C(k+1,k)+至少k+2位置相等对数*C(k+2,k) -- 然后对数的话2^6枚举状态然后用hash表统计即可 至于为什么要 ...

  7. BZOJ 3198 SDOI2013 spring

    为什么SDOI省选一年考两次容斥原理? 我们很容易发现>=k个相等时很好计算的 但是我们要求恰好k个,那么我们容斥即可 至于计算>=k个相等,首先我们枚举相等位置,对每个串对应位置做一遍h ...

  8. [BZOJ 3198] [Sdoi2013] spring 【容斥 + Hash】

    题目链接:BZOJ - 3198 题目分析 题目要求求出有多少对泉有恰好 k 个值相等. 我们用容斥来做. 枚举 2^6 种状态,某一位是 1 表示这一位相同,那么假设 1 的个数为 x . 答案就是 ...

  9. [SDOI2013]spring

    Description Input Output Sample Input 3 3 1 2 3 4 5 6 1 2 3 0 0 0 0 0 0 4 5 6 Sample Output 2 HINT 容 ...

随机推荐

  1. VS设置以管理员方式运行

    一直以为VS不能直接以管理员方式运行,原来它是在高级里的.

  2. 线程异步操作,更新其中一个报错不影响另一个的运行(Task )

    //子系统同步更新                BD001_BLL bll = new BD001_BLL();                List<BD001_Model> lis ...

  3. Postfix 邮件服务 - 基础服务

    环境 centos 6.5 x64 测试 IP:172.16.2.18 1.关闭selinux # cat /etc/selinux/config SELINUX=disabled 2.配置 ipta ...

  4. 属性动画QPropertyAnimation

    属性动画QPropertyAnimation 改变大小.颜色或位置是动画中的常见操作,而QPropertyAnimation类可以修改控件的属性值 大小改变动画: import sys from Py ...

  5. js计算数字长度

    js调用toString方法转为字符串后取长度 var num = 123; alert(num.toString().length);

  6. luogu P1627 [CQOI2009]中位数

    传送门 要求有多少个长度为奇数的区间满足某个数为区间中位数 这样的区间,大于中位数的数个数 等于 小于中位数的数个数 用类似于前缀和的方法,设\(X_i\)为\(i\)和数\(b\)形成的区间内,大于 ...

  7. JS执行一次任务与定期任务与清除执行

    1.一次性任务的执行与清除执行 1.定期执行 <script> timer = 0; timer = setTimeout(function() { console.log("s ...

  8. media属性

    media=“screen”是什么意思?? media 属性规定目标 URL 是为什么类型的媒介/设备进行优化的. 该属性用于规定目标 URL 是为特殊设备(比如 iPhone).语音或打印媒介设计的 ...

  9. 四、Logisitic Regssion练习(转载)

    转载:http://www.cnblogs.com/tornadomeet/archive/2013/03/16/2963919.html 牛顿法:http://blog.csdn.net/xp215 ...

  10. shell脚本中冒号

    格式:: your comment here 格式:# your comment here 写代码注释(单行注释). 例如: 格式:: 'comment line1 comment line2 mor ...