bzoj2012: [Ceoi2010]Pin

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[8];
int _t2[128][128][6];
int _t3[128][4];
int t4,ans=0;
#define t3(a,b) _t3[a][b]
#define t2(a,b,c) _t2[a][b][c]
const int P=1844677;
struct Map{
    int xs[P],ys[P];
    int&operator()(int a,int b,int c,int d){
        int x=(((a<<7|b)<<7|c)<<7)|d;
        int w=x%P;
        while(xs[w]){
            if(xs[w]==x)return ys[w];
            w+=123457;
            if(w>=P)w-=P;
        }
        xs[w]=x;
        return ys[w];
    }
}t0,t1;
int main(){
    scanf("%d%d",&n,&m);
    for(t4=0;t4<n;t4++){
        scanf("%s",s);
        int a=s[0],b=s[1],c=s[2],d=s[3];
        if(!a||!b||!c||!d)printf("%d",a/=0);
        if(m==1){
            ans+=
            -t0(a,b,c,d)++*4
            +t1(a,b,c,0)++
            +t1(a,b,d,1)++
            +t1(a,c,d,2)++
            +t1(b,c,d,3)++;
        }else if(m==2){
            int aa1,aa2,aa3;
            ans+=
            +(aa1=t0(a,b,c,d)++)*6
            -(aa2=t1(a,b,c,0)++
            +t1(a,b,d,1)++
            +t1(a,c,d,2)++
            +t1(b,c,d,3)++)*3
            +(aa3=t2(a,b,0)++
            +t2(a,c,1)++
            +t2(a,d,2)++
            +t2(b,c,3)++
            +t2(b,d,4)++
            +t2(c,d,5)++);
        }else if(m==3){
            ans+=
            -t0(a,b,c,d)++*4
            +(t1(a,b,c,0)++
            +t1(a,b,d,1)++
            +t1(a,c,d,2)++
            +t1(b,c,d,3)++)*3
            -(t2(a,b,0)++
            +t2(a,c,1)++
            +t2(a,d,2)++
            +t2(b,c,3)++
            +t2(b,d,4)++
            +t2(c,d,5)++)*2
            +t3(a,0)++
            +t3(b,1)++
            +t3(c,2)++
            +t3(d,3)++;
        }else{
            ans+=
            t0(a,b,c,d)++
            -(t1(a,b,c,0)++
            +t1(a,b,d,1)++
            +t1(a,c,d,2)++
            +t1(b,c,d,3)++)
            +(t2(a,b,0)++
            +t2(a,c,1)++
            +t2(a,d,2)++
            +t2(b,c,3)++
            +t2(b,d,4)++
            +t2(c,d,5)++)
            -(t3(a,0)++
            +t3(b,1)++
            +t3(c,2)++
            +t3(d,3)++)
            +t4;
        }
    }
    printf("%d\n",ans);
    return 0;
}
时间: 2024-10-06 00:23:35

bzoj2012: [Ceoi2010]Pin的相关文章

Error: Can&#39;t place multiple pins assigned to pin location……解决办法

转载:http://blog.sina.com.cn/s/blog_6f0eeb3301014pi7.html 今天用DE0做VGA实验,在分配管脚后全编译出现下面这样的错误: Error: Can't place multiple pins assigned to pin location Pin_K22 (IOPAD_X41_Y19_N14) Info: Pin B[0] is assigned to pin location Pin_K22 (IOPAD_X41_Y19_N14) Info

Windows.UI.Cred.dll损坏导致不能设置 PIN 密码

心血来潮,重装系统. 然后发现不能设置 PIN,UWP界面在输完两个PIN后直接卡死(第一次设置的时候不需要输入第一行的PIN) google无果,打开系统日志,发现 上网下载一个对应版本的Windows.UI.Cred.dll,替换到System32下,搞定. 估计是装系统的时候不知道哪里抽了,导致这个文件损坏了----

Oracle单实例情况下的library cache pin的问题模拟与问题分析

參考自: WAITEVENT: "library cache pin" Reference Note (文档 ID 34579.1) How to Find the Blocker of the 'library cache pin' in a RAC environment? (文档 ID 780514.1) 本机环境:Oracle 10.2.0.5 x86-64bit for RHEL5.8 x86-64bit 第一个session: [[email protected] ~]$

Allow Pin Swapping Using these Methods options

Frm:http://techdocs.altium.com/display/ADOH/Pin,+Pair+and+Part+Swapping#Pin,PairandPartSwapping-SwapManagerDialog Controlling How the Swaps are Performed on the Schematic In the PCB editor pin, pair and part swaps are performed by exchanging nets on

Java实现3DES加密--及ANSI X9.8 Format标准 PIN PAN获取PIN BlOCK

1, 采用银联ANSI X9.8标准 PIN xor PAN获取PIN BlOCK 2, 采用3Des进行加密 参考: des和3Des加密算法实现 要点:因为3DES是对称加密算法,key是24位,当只有16位时,后8位取key的前8位 ANSI X9.8标准 PIN xor PAN获取PIN BlOCK (1) ANSI X9.8 Format(不带主账号信息) PIN(个人识别码 Personal Identity Number)总共有8个byte长度,分为两个部分;(类似数据包的格式)

RT-thread 设备驱动组件之pin设备

在RT-thread 2.0.0正式版中引入了pin设备作为杂类设备,其设备驱动文件pin.c在rt-thread-2.0.1\components\drivers\misc中,主要用于操作芯片GPIO, 如点亮led,按键等.同时对于相应的芯片平台,需要自行编写底层gpio驱动,如gpio.c. 一.在pin.c中定义了一个静态的pin设备对象static struct rt_device_pin _hw_pin,其中结构体类型struct rt_device_pin在pin.h中定义为: /

【翻译自mos文章】找到&#39;cursor: pin S wait on X&#39; 等待事件的阻塞者session(即:持有者session)

找到'cursor: pin S wait on X' 等待事件的阻塞者session(即:持有者session) 来源于: How to Determine the Blocking Session for Event: 'cursor: pin S wait on X' (Doc ID 786507.1) 适用于: Oracle Database - Enterprise Edition - Version 10.2.0.1 to 11.2.0.3 [Release 10.2 to 11.2

耳机接口pin脚定义

耳机有两种标准: 国标L R MIC GND 欧标:L R GND MIC 测量方法:左声道或者右声道  与另外pin脚间电阻有30欧姆左右说明是测量pin脚是GND:

Altera FPGA中的pin简介

第一步要看的肯定是pin planner ,这个是黑金四代EP4CE15F17C8的视图 先就是发现他们pin有不同的颜色区域,分别对应不同的bank,应该是有的设计里面要求pin在同一个bank吧(首先这么猜想,后面再验证),再看不同的圈圈三角形代表什么意思 View--> Pin Legend 图中几个棕色背景的pin就是使用过得,鼠标放到pin上就会自动显示 pin name 再后面就是all pin list 窗口 此窗口中可以指定pin位置,电压,电流等一系列信息,每一个bank只有一