Description

给出N(2<=N<=50000)个长度为4的字符串,问有且仅有D(1<=D<=4)处不相同的字符串有几对。

Input

第1行: N,D 以下N行每行一个字符串

Output

一个数:有多少对有且仅有处不相同的字符串。
记录每个字符串出现次数以及带1..4个通配符的字符串出现次数,容斥得到答案
#include<cstdio>
int n,m;
char s[];
int _t2[][][];
int _t3[][];
int t4,ans=;
#define t3(a,b) _t3[a][b]
#define t2(a,b,c) _t2[a][b][c]
const int P=;
struct Map{
int xs[P],ys[P];
int&operator()(int a,int b,int c,int d){
int x=(((a<<|b)<<|c)<<)|d;
int w=x%P;
while(xs[w]){
if(xs[w]==x)return ys[w];
w+=;
if(w>=P)w-=P;
}
xs[w]=x;
return ys[w];
}
}t0,t1;
int main(){
scanf("%d%d",&n,&m);
for(t4=;t4<n;t4++){
scanf("%s",s);
int a=s[],b=s[],c=s[],d=s[];
if(!a||!b||!c||!d)printf("%d",a/=);
if(m==){
ans+=
-t0(a,b,c,d)++*
+t1(a,b,c,)++
+t1(a,b,d,)++
+t1(a,c,d,)++
+t1(b,c,d,)++;
}else if(m==){
int aa1,aa2,aa3;
ans+=
+(aa1=t0(a,b,c,d)++)*
-(aa2=t1(a,b,c,)++
+t1(a,b,d,)++
+t1(a,c,d,)++
+t1(b,c,d,)++)*
+(aa3=t2(a,b,)++
+t2(a,c,)++
+t2(a,d,)++
+t2(b,c,)++
+t2(b,d,)++
+t2(c,d,)++);
}else if(m==){
ans+=
-t0(a,b,c,d)++*
+(t1(a,b,c,)++
+t1(a,b,d,)++
+t1(a,c,d,)++
+t1(b,c,d,)++)*
-(t2(a,b,)++
+t2(a,c,)++
+t2(a,d,)++
+t2(b,c,)++
+t2(b,d,)++
+t2(c,d,)++)*
+t3(a,)++
+t3(b,)++
+t3(c,)++
+t3(d,)++;
}else{
ans+=
t0(a,b,c,d)++
-(t1(a,b,c,)++
+t1(a,b,d,)++
+t1(a,c,d,)++
+t1(b,c,d,)++)
+(t2(a,b,)++
+t2(a,c,)++
+t2(a,d,)++
+t2(b,c,)++
+t2(b,d,)++
+t2(c,d,)++)
-(t3(a,)++
+t3(b,)++
+t3(c,)++
+t3(d,)++)
+t4;
}
}
printf("%d\n",ans);
return ;
}

bzoj2012: [Ceoi2010]Pin的更多相关文章

  1. [Ceoi2010]Pin

    #2012. [Ceoi2010]Pin Online Judge:Bzoj-2012 Label:容斥,STL 题目描述 给出N(2<=N<=50000)个长度为4的字符串,问有且仅有D ...

  2. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  3. (原创)QuartusII设置虚拟引脚(Virtual Pin)

    方法一: 在Quartus II中Assignments->Assignment Editor, 在Category栏选择logic options, 到列表中To列下添加要设置的引脚接口,如果 ...

  4. 3.3.2 pulseIn(pin,state,timeout)

    pulseIn函数用于读取引脚脉冲的时间长度,脉冲可以是HIGH或LOW.如果是HIGH,函数将先等引脚变为高电平,然后开始计时,一直到变为低电平为止.返回脉冲持续的时间长短, 单位为ms.如果超时还 ...

  5. Win10 IoT C#开发 3 - GPIO Pin 控制发光二极管

    Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,与以往的Windows版本不同,是为物联网设备专门设计的,硬件也不仅仅限于x86架构,同时可以在ARM架构上运行. 上一篇文 ...

  6. Intel pin 2.14/CentOS 6 X86-64/安装

    环境:Intel Pin 2.14 CentOS 6 X86-64 --linux.tar.gz 进入 ./source/tools/ManualExamples make all TARGET=in ...

  7. DES MAC PIN HEX

    /* void DesEncrypt( UCHAR * auchInput,UCHAR * auchKey,UCHAR * auchOutput=NULL); Function: DesEncrypt ...

  8. quartus II PIN脚相关之一

    FPGA设计中有时候会改变输入输出名称,但是会带来一个问题,在PIN 叫配置页面上会有余留的久名称的Pin脚.如实例中,把 FPGA_CLK_50MHZ 名称修改为 FPGA_CLK,经过编译综合之后 ...

  9. 无线安全专题_破解篇02--kali破解pin码

    最近项目有点紧,所以本应该上周发的文章,拖到了本周三,在此说声抱歉.无线安全专题,我打算系统地写六个部分,分别为破解篇,攻击篇,欺骗篇,路由篇,移动篇和蓝牙篇,当然在发布的过程中,可能还会掺杂着发布f ...

随机推荐

  1. html5实现饼图和线图-我们到底能走多远系列(34)

    我们到底能走多远系列(34) 扯淡: 送给各位一段话:     人生是一个不断做加法的过程     从赤条条无牵无挂的来     到学会荣辱羞耻 礼仪规范     再到赚取世间的名声 财富 地位    ...

  2. 2014年IT互联网行业薪酬待遇

    以下均为应届毕业生的起薪待遇: 一.民企 1. 百度 13k*14.6,special 14~17k*14.6 开发类 13K*14.6 (2014) 测试类.前端类 12K*14.6 (2014) ...

  3. hdu 4258 Covered Walkway

    题目大意: 一个N个点的序列,要将他们全部覆盖,求总最少费用:费用计算: c+(x-y)2 分析: 斜率优化DP 我们假设k<j<i.如果在j的时候决策要比在k的时候决策好,那么也是就是d ...

  4. Java-->多线程复制(文件指针)

    --> 这里用到两种方法...其实也不算两种,就一点点不一样而已... ---> Test 测试类 package com.dragon.java.multithreadcopy; imp ...

  5. C++ Primer : 第十二章 : 动态内存之动态数组

    动态数组的分配和释放 new和数组 C++语言和标准库提供了一次分配一个对象数组的方法,定义了另一种new表达式语法.我们需要在类型名后跟一对方括号,在其中指明要分配的对象的数目. int* arr ...

  6. JavaWeb学习记录(二十)——Model1模式(javaBean+jsp)实现简单计算器案例

    ¨JSP技术提供了三个关于JavaBean组件的动作元素,即JSP标签,它们分别为: ¨<jsp:useBean>标签:用于在JSP页面中查找或实例化一个JavaBean组件. ¨< ...

  7. spark新能优化之reduceBykey和groupBykey的使用

    val counts = pairs.reduceByKey(_ + _) val counts = pairs.groupByKey().map(wordCounts => (wordCoun ...

  8. timus 1210 Kind Spirits(最短路)(动态规划)

    Kind Spirits Time limit: 1.0 secondMemory limit: 64 MB Ivanushka the Fool lives at the planet of 0-l ...

  9. PHP浮点型

    <?php$num_float1 = 1.234;    //小数点echo $num_float1;echo "<br />";$num_float2 = 1. ...

  10. 嵌入式Linux开发——内容介绍与开发环境的搭建

    嵌入式Linux开发步骤 设计自己的硬件系统 编写Bootloader 裁剪自己的Linux内核 开发移植设备驱动 构建根文件系统 开发应用程序 嵌入式Linux学习要点 熟练使用开发工具和相关指令集 ...