BZOJ 3198 SDOI2013 spring
为什么SDOI省选一年考两次容斥原理?
我们很容易发现>=k个相等时很好计算的
但是我们要求恰好k个,那么我们容斥即可
至于计算>=k个相等,首先我们枚举相等位置,对每个串对应位置做一遍hash就可以了
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cstdlib>
using namespace std; typedef long long LL;
const int maxn=100010;
const int x=1333331;
const int mod=100007;
int n,k,lim;
int Num[maxn];
int jc[maxn];
LL A[6][maxn];
LL Hash[maxn];
LL ans; void read(int &num){
num=0;char ch=getchar();
while(ch<'!')ch=getchar();
while(ch>='0'&&ch<='9')num=num*10+ch-'0',ch=getchar();
}
struct HASMMAP{
int h[mod+10],next[200010],cnt;
int val[200010];
LL S[200010];
void init(){memset(h,0,sizeof(h));cnt=0;}
void push(LL Hash){
int key=Hash%mod;
if(key<0)key+=mod;
for(int i=h[key];i;i=next[i]){
if(S[i]==Hash){val[i]++;return;}
}
++cnt;next[cnt]=h[key];h[key]=cnt;
S[cnt]=Hash;val[cnt]=1;
}
int ask(LL Hash){
int key=Hash%mod;
if(key<0)key+=mod;
for(int i=h[key];i;i=next[i]){
if(S[i]==Hash)return val[i];
}return 0;
}
}H;
LL Get_ans(int k){
H.init();
LL sum=0;
for(int i=1;i<=n;++i){
LL now=0;
for(int j=0;j<6;++j){
if(k>>j&1)now=now*x+A[j][i];
}
sum+=H.ask(now);
H.push(now);
}return sum;
}
LL C(int n,int m){return jc[n]/jc[m]/jc[n-m];}
int Get_Num(int k){
int cnt=0;
for(int i=0;i<6;++i)if(k>>i&1)cnt++;
return cnt;
} int main(){
read(n);read(k);
for(int i=1;i<=n;++i)for(int j=0;j<6;++j)scanf("%lld",&A[j][i]);
jc[0]=1;
for(int i=1;i<=6;++i)jc[i]=jc[i-1]*i;
lim=(1<<6);
for(int i=0;i<lim;++i){
Num[i]=Get_Num(i);
if(Num[i]<k)continue;
if((Num[i]-k)&1)ans=ans-1LL*C(Num[i],k)*Get_ans(i);
else ans=ans+1LL*C(Num[i],k)*Get_ans(i);
}printf("%lld\n",ans);
return 0;
}
BZOJ 3198 SDOI2013 spring的更多相关文章
- BZOJ 3198: [Sdoi2013]spring [容斥原理 哈希表]
3198: [Sdoi2013]spring 题意:n个物品6个属性,求有多少不同的年份i,j满足有k个属性对应相等 一开始读错题了,注意是对应相等 第i个属性只能和第i个属性对应 容斥一下 \[ 恰 ...
- [BZOJ 3198] [Sdoi2013] spring 【容斥 + Hash】
题目链接:BZOJ - 3198 题目分析 题目要求求出有多少对泉有恰好 k 个值相等. 我们用容斥来做. 枚举 2^6 种状态,某一位是 1 表示这一位相同,那么假设 1 的个数为 x . 答案就是 ...
- 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 [ ...
- 3198: [Sdoi2013]spring【容斥原理+hash】
容斥是ans= 至少k位置相等对数C(k,k)-至少k+1位置相等对数C(k+1,k)+至少k+2位置相等对数*C(k+2,k) -- 然后对数的话2^6枚举状态然后用hash表统计即可 至于为什么要 ...
- bzoj3198[Sdoi2013]spring 容斥+hash
3198: [Sdoi2013]spring Time Limit: 40 Sec Memory Limit: 256 MBSubmit: 1143 Solved: 366[Submit][Sta ...
- [Sdoi2013] [bzoj 3198] spring (hash+容斥原理)
题目描述 给出nnn个666维坐标,求有多少对点对满足恰好mmm个位置相等 1<=n<=1051<=n<=10^51<=n<=105 0<=k<=60& ...
- [BZOJ 3129] [Sdoi2013] 方程 【容斥+组合数取模+中国剩余定理】
题目链接:BZOJ - 3129 题目分析 使用隔板法的思想,如果没有任何限制条件,那么方案数就是 C(m - 1, n - 1). 如果有一个限制条件是 xi >= Ai ,那么我们就可以将 ...
- BZOJ 3123: [Sdoi2013]森林 [主席树启发式合并]
3123: [Sdoi2013]森林 题意:一个森林,加边,询问路径上k小值.保证任意时刻是森林 LCT没法搞,树上kth肯定要用树上主席树 加边?启发式合并就好了,小的树dfs重建一下 注意 测试点 ...
- 洛谷 P3307: bzoj 3202: [SDOI2013] 项链
题目传送门:洛谷P3307.这题在bzoj上是权限题. 题意简述: 这题分为两个部分: ① 有一些珠子,每个珠子可以看成一个无序三元组.三元组要满足三个数都在$1$到$m$之间,并且三个数互质,两个珠 ...
随机推荐
- PHP:strpos()-返回字符串在另一个字符串中第一次出现的位置
strpos()函数返回字符串在另一个字符串中第一次出现的位置.如果没有找到该字符串,则返回false. 语法:strpos(sting, find [, start]) string ,必须,要搜索 ...
- AJAX请求和跨域请求详解(原生JS、Jquery)
一.概述 AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. AJAX = 异步 JavaScript 和 XML,是一种用于创建快速动态网页的技术.通过在后台与服务器进行少量数 ...
- linux常用命令收集(持续中)
mv : 既可以重命名,又可以移动文件或文件夹 例子:将目录A重命名为B mv A B 例子:将/a目录移动到/b下,并重命名为c mv /a /b/c 其实在文本模式中要重命名文件或目录的话也是 ...
- ASP.NET对HTML元素进行权限控制(二)
这是这个权限控制的第一步,扫描界面把要分配权限的元素的信息获取出来存入到数据库中. 这一步分三小步: (1).标出界面所要分配权限的元素 (2).扫描界面获取所要分配权限的元素信息.(ID,标题,层级 ...
- OPatch failed with error code 73
前几天给一套LINUX下的RAC数据库打补丁升级,有一台机器更新失败了,相关的异常内容如下: Restoring "/u01/app/oracle/11.2.0/db_1" to ...
- CPU 时间片 分时 轮转调度
时间片即CPU分配给各个程序的时间,每个线程被分配一个时间段,称作它的时间片,即该进程允许运行的时间,使各个程序从表面上看是同时进行的.如果在时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进 ...
- Oracle 存储过程实例
create or replace procedure PCREPORT is startDate DATE; --起始如期 nowTime DATE; --当前日期 nowTime2 DATE; - ...
- LintCode-Word Search II
Given a matrix of lower alphabets and a dictionary. Find all words in the dictionary that can be fou ...
- Notes of the scrum meeting(10/31)
meeting time:3:00~4:30p.m.,October 30th,2013 meeting place:绿园 attendees: 顾育豪 ...
- Useful related java API for Android
Language_suport and Other Language-Oriented API: strings,exceptions, threads, #java.lang.* offers th ...