大体思路是先求出来\(f[i]\)代表有至少\(i\)个位置相同的点对数。

然后就已经没什么好害怕的了(跟BZOJ3622一样)

然后这个\(f[i\)]怎么求呢?

最无脑的方法就是枚举位置,然后\(hash\)表记一下每种情况出现多少次然后把\(\sum_{情况个数}{情况次数*(情况次数-1)}\)加到\(f[\)枚举的位置个数\(]\)。就行了。

发现这个方法复杂度足以通过此题。

#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
#define int long long
const int N=101000;
const int mod=23333;
const int p=19260817;
int cnt,head[25000];
struct edge{
int nxt,id,c;
}e[N];
int a[N][10],n,C[10][10],num,b[10],f[10],ans,mmp;
bool judge(int now,int x,int y){
for(int i=1;i<=num;i++)
if(a[x][b[i]]!=a[y][b[i]])return false;
return true;
}
void add(int u,int id){
cnt++;
e[cnt].nxt=head[u];
e[cnt].id=id;
e[cnt].c=1;
head[u]=cnt;
}
int ins(int now,int id,int x){
for(int i=head[x];i;i=e[i].nxt)
if(judge(now,e[i].id,id)){
e[i].c++;
return e[i].c-1;
}
add(x,id);
return 0;
}
int read(){
int sum=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){sum=sum*10+ch-'0';ch=getchar();}
return sum*f;
}
signed main(){
n=read();mmp=read();
for(int i=1;i<=n;i++)
for(int j=1;j<=6;j++)
a[i][j]=read();
C[0][0]=1;
for(int i=1;i<=6;i++) {
C[i][0]=1;
for(int j=1;j<=i;j++)C[i][j]=C[i-1][j]+C[i-1][j-1];
}
for(int i=0;i<(1<<6);i++){
num=0;
memset(head,0,sizeof(head));cnt=0;
for(int j=1;j<=6;j++)if(i&(1<<(j-1)))b[++num]=j;
for(int j=1;j<=n;j++){
int w=0;
for(int k=1;k<=num;k++)
w=(w*p%mod+a[j][b[k]]%mod)%mod;
f[num]+=ins(i,j,w);
}
}
int type=1;
for(int i=mmp;i<=6;i++){
ans+=type*C[i][mmp]*f[i];
type=-type;
}
printf("%lld",ans);
return 0;
}

sdoi2013 spring(hash+容斥)的更多相关文章

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

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

  2. 【BZOJ3129】[SDOI2013]方程(容斥,拓展卢卡斯定理)

    [BZOJ3129][SDOI2013]方程(容斥,拓展卢卡斯定理) 题面 BZOJ 洛谷 题解 因为答案是正整数,所先给每个位置都放一个就行了,然后\(A\)都要减一. 大于的限制和没有的区别不大, ...

  3. [BZOJ 3129] [Sdoi2013] 方程 【容斥+组合数取模+中国剩余定理】

    题目链接:BZOJ - 3129 题目分析 使用隔板法的思想,如果没有任何限制条件,那么方案数就是 C(m - 1, n - 1). 如果有一个限制条件是 xi >= Ai ,那么我们就可以将 ...

  4. 洛谷$P$3301 $[SDOI2013]$方程 $exLucas$+容斥

    正解:$exLucas$+容斥 解题报告: 传送门! 在做了一定的容斥的题之后再看到这种题自然而然就应该想到容斥,,,? 没错这题确实就是容斥,和这题有点儿像 注意下的是这里的大于和小于条件处理方式不 ...

  5. bzoj3198[Sdoi2013]spring 容斥+hash

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

  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. [Sdoi2013] [bzoj 3198] spring (hash+容斥原理)

    题目描述 给出nnn个666维坐标,求有多少对点对满足恰好mmm个位置相等 1<=n<=1051<=n<=10^51<=n<=105 0<=k<=60& ...

  8. [SDOI2013]泉(容斥)

    /* 容斥加上哈希 首先我们可以2 ^ 6枚举相同情况, 然后对于这些确定的位置哈希一下统计方案数 这样我们就统计出了这些不同方案的情况, 然后容斥一下就好了 */ #include<cstdi ...

  9. codeforces 597div2 F. Daniel and Spring Cleaning(数位dp+二维容斥)

    题目链接:https://codeforces.com/contest/1245/problem/F 题意:给定一个区间(L,R),a.b两个数都是属于区间内的数,求满足 a + b = a ^ b ...

随机推荐

  1. 封装自己的jquery框架

    jQuery is a fast small JavaScript library 如何封装自己的jQuery <script> // 这里使用沙箱模式,可以防止全局污染 (functio ...

  2. POJ 1258 Agri-Net( 裸最小生成树 )

    链接:传送门! 题意:一个裸最小生成树,采用Kruskal. /******************************************************************** ...

  3. RobotFrameWork+APPIUM实现对安卓APK的自动化测试----第四篇【AppiumLibrary实用函数介绍】

    http://blog.csdn.net/deadgrape/article/details/50585677 通过前几篇的讲述,我相信大家已经对RF+Appium的框架已经有所了解了. 接下来我告诉 ...

  4. asp.net mvc--传值-后台->前台

    后台传值到前台的方式 Model Binding # 这是public ActionResult中的最后部分 return View(listmode); json方式01 public void G ...

  5. 洛谷 P1270 “访问”美术馆(树形DP)

    P1270 “访问”美术馆 题目描述 经过数月的精心准备,Peer Brelstet,一个出了名的盗画者,准备开始他的下一个行动.艺术馆的结构,每条走廊要么分叉为两条走廊,要么通向一个展览室.Peer ...

  6. WebApi传参总动员(一)

    目前自己的工作和WebApi相关,免不了传入.接收参数.以前的老办法是从请求流中获取json,再反序列化,这中间有2个不能控制的地方,一个是流,一个是反序列化,都需要try,总感觉非常的不爽.因此对W ...

  7. mac下安装配置java开发环境

    可以使用homebrew下载相关软件,以下具体讲一下环境的配置: mac下安装jdk vi .bash_profile 输入i,进入编辑模式 输入以下配置,其中JAVA_HOME是你的jdk安装目录 ...

  8. HDU 3861--The King’s Problem【scc缩点构图 &amp;&amp; 二分匹配求最小路径覆盖】

    The King's Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  9. 使用从mysql中取数据

    import MySQLdb conn=MySQLdb.connect(host="xx",user="xx",passwd="xx",db ...

  10. POJ 题目3461 Oulipo(KMP)

    Oulipo Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 26479   Accepted: 10550 Descript ...