610. 数对的个数

★★   输入文件:dec.in   输出文件:dec.out   简单对比
时间限制:1 s   内存限制:128 MB

Description
出题是一件痛苦的事情!
题目看多了也有审美疲劳,于是我舍弃了大家所熟悉的A+B Problem,改用A-B了哈哈!

好吧,题目是这样的:给出一串数以及一个数字C,要求计算出所有A-B=C的数对的个数。

(不同位置的数字一样的数对算不同的数对)
Input Format
第一行包括2个非负整数N和C,中间用空格隔开。
第二行有N个整数,中间用空格隔开,作为要求处理的那串数。
Output Format
输出一行,表示该串数中包含的所有满足A-B=C的数对的个数。
Sample Input
4 1
1 1 2 3
Sample Output
3
Data Limit
对于90%的数据,N <= 2000;
对于100%的数据,N <= 200000。
所有输入数据都在longint范围内。

#include<iostream>
#include<cstdio>
#include<cstring>
#define mod 23333
#define maxn 200010 using namespace std;
int a[maxn],n,c,cnt[maxn],head[maxn],num,ans;
struct node
{
int from;
int to;
int next;
}e[maxn<<]; void insert(int x)
{
int ha=(x%mod+x/mod)%mod;
for(int i=head[ha];i;i=e[i].next)
if(e[i].to==x)
{
cnt[i]++;
return;
}
e[++num].to=x;
e[num].next=head[ha];
head[ha]=num;cnt[num]++;
} int Query(int x)
{
int ha=(x%mod+x/mod)%mod;
for(int i=head[ha];i;i=e[i].next)
if(e[i].to==x) return cnt[i];
return ;
} int main()
{
freopen("dec.in","r",stdin);
freopen("dec.out","w",stdout);
scanf("%d%d",&n,&c);
for(int i=;i<=n;i++)
{
scanf("%d",&a[i]);
int s=a[i]+c;
insert(s);
}
for(int i=;i<=n;i++)
ans+=Query(a[i]);
printf("%d\n",ans);
return ;
}

心若向阳,无谓悲伤

1176. [郑州101中学] 月考

★   输入文件:mtest.in   输出文件:mtest.out   简单对比
时间限制:1 s   内存限制:128 MB

【题目描述】

在上次的月考中Bugall同学违反了考场纪律还吃了处分,更可气的是在第二天的校会时
 间学校就此事做了全校通报. 现已知在当天校会时间有总共N个同学听到了有关Bugall的处分决定.
 
 Bugall同学在铁一有M个朋友,这M个人中有的可能听到了当天的处分决定,有的可能没
 有听到,现在Bugall同学想知道他有几个朋友听到了当天的处分通报.

【输入格式】

第一行为一个整数N,从第2行到N+1行,每行用一个长度不超过200的字符串表示
 一个人的名字.
  第N+2行为一个整数M,从第N+3行到N+M+2行,每行用一个长度不超过200的字符
 串表示Bugall同学一个朋友的名字.

【输出格式】

输出有几个Bugall同学的铁一朋友在当天的校会时间听到了Bugall处分通报.保证不重名。

【样例输入】

3
Dazui
Erge
Dapigu
2
Varpro
Erge

【样例输出】

1
#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 500010
#define ha 119
#define HA 33
#define mod 233333
#define MOD 100007 using namespace std;
int n,m,ans,l,num,cnt[maxn],head[maxn];
char s[];
struct node{
int to,pre;
}e[maxn]; void insert(int x,int y)
{
for(int i=head[x];i;i=e[i].pre)
if(e[i].to==y){
cnt[i]++;return;
}
num++;e[num].to=y;
e[num].pre=head[x];
head[x]=num;cnt[num]++;
} int Query(int x,int y)
{
for(int i=head[x];i;i=e[i].pre)
if(e[i].to==y)return cnt[i];
return ;
} int main()
{
freopen("mtest.in","r",stdin);
freopen("mtest.out","w",stdout);
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%s",s);
l=strlen(s);
int t=,T=;
for(int j=;j<l;j++)
{
t=t*ha+s[j]-'A';t%=mod;
T=T*HA+s[j]-'A';T%=MOD;
}
insert(t,T);
}
scanf("%d",&m);
for(int i=;i<=m;i++)
{
scanf("%s",s);
l=strlen(s);
int t=,T=;
for(int j=;j<l;j++){
t=t*ha+s[j]-'A';t%=mod;
T=T*HA+s[j]-'A';T%=MOD;
}
ans+=Query(t,T);
}
printf("%d\n",ans);
return ;
}

我现在很悲伤

找不到水题了233333

hash练习们的更多相关文章

  1. 复杂的 Hash 函数组合有意义吗?

    很久以前看到一篇文章,讲某个大网站储存用户口令时,会经过十分复杂的处理.怎么个复杂记不得了,大概就是先 Hash,结果加上一些特殊字符再 Hash,结果再加上些字符.再倒序.再怎么怎么的.再 Hash ...

  2. 对抗密码破解 —— Web 前端慢 Hash

    (更新:https://www.cnblogs.com/index-html/p/frontend_kdf.html ) 0x00 前言 天下武功,唯快不破.但在密码学中则不同.算法越快,越容易破. ...

  3. 散列表(hash table)——算法导论(13)

    1. 引言 许多应用都需要动态集合结构,它至少需要支持Insert,search和delete字典操作.散列表(hash table)是实现字典操作的一种有效的数据结构. 2. 直接寻址表 在介绍散列 ...

  4. hash表长度优化证明

    hash表冲突的解决方法一般有两个方向: 一个是倾向于空间换时间,使用向量加链表可以最大程度的在节省空间的前提下解决冲突. 另外一个倾向于时间换空间,下面是关于这种思路的一种合适表长度的证明过程: 这 ...

  5. SQL Server-聚焦查询计划Stream Aggregate VS Hash Match Aggregate(二十)

    前言 之前系列中在查询计划中一直出现Stream Aggregate,当时也只是做了基本了解,对于查询计划中出现的操作,我们都需要去详细研究下,只有这样才能对查询计划执行的每一步操作都了如指掌,所以才 ...

  6. C# salt+hash 加密

    一.先明确几个基本概念 1.伪随机数:pseudo-random number generators ,简称为:PRNGs,是计算机利用一定的算法来产生的.伪随机数并不是假随机 数,这里的" ...

  7. SQL 提示介绍 hash/merge/concat union

    查询提示一直是个很有争议的东西,因为他影响了sql server 自己选择执行计划.很多人在问是否应该使用查询提示的时候一般会被告知慎用或不要使用...但是个人认为善用提示在不修改语句的条件下,是常用 ...

  8. 对一致性Hash算法,Java代码实现的深入研究

    一致性Hash算法 关于一致性Hash算法,在我之前的博文中已经有多次提到了,MemCache超详细解读一文中"一致性Hash算法"部分,对于为什么要使用一致性Hash算法.一致性 ...

  9. 巧用location.hash保存页面状态

    在我们的项目中,有大量ajax查询表单+结果列表的页面,由于查询结果是ajax返回的,当用户点击列表的某一项进入详情页之后,再点击浏览器回退按钮返回ajax查询页面,这时大家都知道查询页面的表单和结果 ...

  10. redis数据结构详解之Hash(四)

    序言 Hash数据结构累似c#中的dictionary,大家对数组应该比较了解,数组是通过索引快速定位到指定元素的,无论是访问数组的第一个元素还是最后一个元素,所耗费的时间都是一样的,但是数组中的索引 ...

随机推荐

  1. css--小白入门篇6(终)

    一.相对定位 定位有三种,分别是相对定位.绝对定位.固定定位. 相对定位: 1 position:relative; 绝对定位: 1 position:absolute; 固定定位: 1 positi ...

  2. Python学习-变量

    什么是变量? 概念:变量就是会变化的量,主要是“变”与“量”二字.变即是“变化”. 特点:与其他编程语言相同,变量是最基本的存储单位,是用来存放数据的容器.可以引用一个具体的数值,进而直接去改变这个引 ...

  3. 39页第3题 求x的n次幂

    /*计算x的n次幂*/ #include<stdio.h> main(void) { int i,n; double x,y; printf("Enter x:");/ ...

  4. buf.writeDoubleBE()函数详解

    buf.writeDoubleBE(value, offset[, noAssert]) buf.writeDoubleLE(value, offset[, noAssert]) value {Num ...

  5. react入门--------安装react

    创建一个单页面应用 Create React App是开始构建新的React单页应用程序的最佳方式. 它可以帮助您快速集成您的开发环境,以便您可以使用最新的JavaScript功能,它提供了一个很好的 ...

  6. CentOS服务器上部署 oracle10gr2

    1.下载Centos系统 Linux 镜像文件.         推荐使用 CentOS5.4,下载地址:http://isoredirect.centos.org/centos/5/isos/i38 ...

  7. [luoguP1901] 发射站(单调栈)

    传送门 呵呵 ——代码 #include <cstdio> #include <iostream> #define N 1000010 #define LL long long ...

  8. mybatis指定jdbctype

    MyBatis 插入空值时,需要指定JdbcType mybatis insert空值报空值异常,但是在pl/sql不会提示错误,主要原因是mybatis无法进行转换 所以在MyBatis映射文件中要 ...

  9. RxJava系列之二 变换类操作符具体解释1

    1.回想 上一篇文章我们主要介绍了RxJava , RxJava 的Observables和 RxJava的just操作符.以及RxJava一些经常使用的操作. 没看过的抓紧点我去看吧. 事实上RxJ ...

  10. 【独立开发人员er Cocos2d-x实战 009】Cocos2dx 菜单项CCMenu使用

    Cocos2dx中的菜单用CCMenu/Menu类来实现.该类是一个容器.用来装载各种菜单项,用于菜单项能够是图片.系统字体等. 理论就不说了.先上代码: CCMenuItemToggle* item ...