http://acm.timus.ru/problem.aspx?space=1&num=1932

B - The Secret of Identifier
Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u
Submit Status Practice URAL Description
Davy Jones: You've been captain of the Black Pearl for 13 years. That was our agreement.
Jack: Technically I was only captain for two years, then I was mutinied upon.
Davy Jones: Then you were a poor captain, but a captain nonetheless. Have you not introduced yourself as Captain Jack Sparrow?
According to the Pirate Code, each of the pirates of the Caribbean at the beginning of their professional career (hereditary pirates –– at birth) is assigned by a unique identifier. Pirate's identifier is a string of four hexadecimal digits. However, it is not a usual row of numbers, it is said that personal qualities and life path of its owner are encoded in it by a mysterious way. But no one still could guess this mystical connection.
Once Captain Jack Sparrow, while sitting in captain’s cabin, decided to try to find the way to derive some data about a pirate using the identifier. Memories about how he lost the Black Pearl last time gave him the idea that more similar identifiers of two pirates are, bigger chances for these pirates to unite against the Captain, and, as a result, to make a mutiny. The Captain Jack Sparrow, of course, doesn’t want to have the mutiny on his ship, but he chose the new team this time and it is going to be a long voyage. Now Jack needs to estimate the opportunities of raising the mutiny on his ship, based on the conclusions. For this aim he first wants to know for each pair of pirates a number of positions in their identifiers in which they are different. Input
The first line contains an integer n –– the number of pirates aboard the Black Pearl ( ≤ n ≤ ). Each of the following n lines contains four-digit identifier of the respective pirate. Only decimal digits and lowercase Latin letters from “a” to “f” inclusive are used in writing identifiers. Identifiers of all pirates are different. Output
Output four space separated integers –– the amount of pairs of pirates, which have different identifiers exactly in one, two, three and four positions respectively. Sample Input
input output dead
beef
f00d

题目(格式混乱,请点击上面链接查看原题)

给n个不同的4位十六进制数,两两按位比较,输出有1位不同的、两位不同的、3位不同的、4位不同的组合的个数。(输出4个数)

先弄15个4位十六进制数,像掩码之类的一样,虽然我也不懂掩码具体是怎么弄的。比如现在用的是0F0F,和输入的那些数按位与(&)一下,得到数x,把a[x]++,最后统计a[i]>1的就是0F0F这两个F的位置相同的数的个数,然后这有2个F,就把代表2个相同的t[2]+=a[i]*(a[i]-1)/2;

好像有点说不清楚,不过就是这样!

掩码和F的数量可以开始先打好表,也可以每次算一下,我是先打好表的。

 //最终版本,我哭了
#include<cstdio>
#include<cstring>
typedef long long ll;
const ll MAXN=;
const ll psn=;
const ll ps[psn]= {0x000f,0x00f0,0x00ff,0x0f00,0x0f0f,0x0ff0,0x0fff,0xf000,
0xf00f,0xf0f0,0xf0ff,0xff00,0xff0f,0xfff0,0xffff};
const ll pa[psn]= {,,,,,,,,,,,,,,};
ll t[MAXN],a[MAXN],ans[];
ll C(ll a,ll b){
ll re=;
for(ll i=;i<b;i++){
re=re*(a-i)/(i+);
}
return re;
} int main()
{
int i,j,n;
while(scanf("%d",&n)!=EOF)
{
memset(ans,,sizeof(ans));
for(i=; i<n; i++)
scanf("%x",&a[i]);
for(i=; i<psn; i++)
{
memset(t,,sizeof(t));
for(j=; j<n; j++)
t[a[j]&ps[i]]++;
for(j=; j<=0xffff; j++)
ans[pa[i]]+=t[j]*(t[j]-)/;
}
for(i=; i>; i--)
for(j=;j<i;j++)
ans[j]-=C(i,j)*ans[i];
ans[]=C(n,)-ans[]-ans[]-ans[];
printf("%I64d %I64d %I64d %I64d\n",ans[],ans[],ans[],ans[]);
}
return ;
}

URAL 1932 The Secret of Identifier 题解的更多相关文章

  1. URAL 1932 The Secret of Identifier(容斥)

    Description Davy Jones: You've been captain of the Black Pearl for 13 years. That was our agreement. ...

  2. ural 1932 The Secret of Identifier (容斥原理)

    标题效果: 计算到n字符串. 精确到只是有一个不同的字符,两个不同的字符.三个不同的字符,四对不同的字符. IDEAS: 枚举状态. dp[i] [j] ...当前串取出 i 状态下的全部字符转化成十 ...

  3. ural 1932 The Secret of Identifier 容斥

    主题链接:点击打开链接 stl+容斥 #include <cstdio> #include <cstring> #include <algorithm> #incl ...

  4. Ural 1201 Which Day Is It? 题解

    目录 Ural 1201 Which Day Is It? 题解 题意 输入 输出 题解 程序 Ural 1201 Which Day Is It? 题解 题意 打印一个月历. 输入 输入日\((1\ ...

  5. URAL 1707. Hypnotoad&#39;s Secret(树阵)

    URAL 1707. Hypnotoad's Secret space=1&num=1707" target="_blank" style="" ...

  6. URAL题解三

    URAL题解三 URAL 1045 题目描述:有\(n\)个机场,\(n-1\)条航线,任意两个机场有且只有一种方案联通.现有两个恐怖分子从\(m\)号机场出发,第一个人在机场安装炸弹,乘坐飞机,引爆 ...

  7. URAL题解二

    URAL题解二 URAL 1082 题目描述:输出程序的输入数据,使得程序输出"Beutiful Vasilisa" solution 一开始只看程序的核心部分,发现是求快排的比较 ...

  8. URAL题解一

    URAL题解一 URAL 1002 题目描述:一种记住手机号的方法就是将字母与数字对应,如图.这样就可以只记住一些单词,而不用记住数字.给出一个数字串和n个单词,用最少的单词数来代替数字串,输出对应的 ...

  9. ural 1707. Hypnotoad's Secret(线段树)

    题目链接:ural 1707. Hypnotoad's Secret 题目大意:给定N和M,然后N组s0, t0, Δs, Δt, k,每组能够计算出k个星星的坐标:M组a0, b0, c0, d0, ...

随机推荐

  1. [CareerCup] 4.5 Validate Binary Search Tree 验证二叉搜索树

    4.5 Implement a function to check if a binary tree is a binary search tree. LeetCode上的原题,请参见我之前的博客Va ...

  2. ios —— UIViewAdditions 布局坐标类库

    方便大家计算视图的高度,宽度,上下左右坐标,简化代码操作,更加直观 下载地址:http://download.csdn.net/detail/humingtao2013/7511657

  3. ubuntu 安装编译nginx,并实现HLS推送,,可以实现摄像头直播

    1.安装nginx的依赖包  zlib pcre openssl(可以源码安装也可以直接系统安装) sudo apt-get install libpcre3 libpcre3-dev zlib1g- ...

  4. chromiun 学习《一》

    众所周知,Chrome是建立在开源的Chromium项目上的. 而且不得不说,学习并分析开源项目的代码对一个程序员的提高确实蛮大的.这篇博文我会记录一下学习过程中我遇到的一些问题,并分享学习中我所参考 ...

  5. python 中颜色的表示

    字背景颜色范围:40----49 40:黑 41:深红 42:绿 43:黄色 44:蓝色 45:紫色 46:深绿 47:白色 字颜色:30-----------39 30:黑 31:红 32:绿 33 ...

  6. WEB中的cookie

    首先来一篇好文章,刚好看到的: 沉默中的狂怒 —— Cookie 大喷发---------------- http://www.cnblogs.com/index-html/p/mitm-cookie ...

  7. hdu1535 SPFA

    2边SPFA 然后求和 #include<stdio.h> #include<string.h> #include<queue> #define INF 10000 ...

  8. Java基础-多线程

    介绍 操作系统能同时运行几个程序,每个独立运行的程序又称之为进程. 对于同一个程序,它又可以分成若干个独立的执行流,我们称之为线程.线程提供了多任务处理的能力 用进程和线程的观点来研究软件是当今普遍采 ...

  9. BZOJ2302 [HAOI2011]Problem c

    Description 给n个人安排座位,先给每个人一个1~n的编号,设第i个人的编号为ai(不同人的编号可以相同),接着从第一个人开始,大家依次入座,第i个人来了以后尝试坐到ai,如果ai被占据了, ...

  10. spring全注解项目

    项目结构如下: spring配置 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=&q ...