zoukankan      html  css  js  c++  java
  • hash练习们

    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<<1];
    
    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 0;    
    }
    
    int main()
    {
        freopen("dec.in","r",stdin);
        freopen("dec.out","w",stdout);
        scanf("%d%d",&n,&c);
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&a[i]);
            int s=a[i]+c; 
            insert(s);
        }
        for(int i=1;i<=n;i++)
            ans+=Query(a[i]);
        printf("%d
    ",ans);
        return 0;
    }
    心若向阳,无谓悲伤

    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[205];
    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 0;
    }
    
    int main()
    {
        freopen("mtest.in","r",stdin);
        freopen("mtest.out","w",stdout);
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
            scanf("%s",s);
            l=strlen(s);
            int t=0,T=0;
            for(int j=0;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=1;i<=m;i++)
        {
            scanf("%s",s);
            l=strlen(s);
            int t=0,T=0;
            for(int j=0;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
    ",ans);
        return 0;
    }
    我现在很悲伤
    找不到水题了233333
    折花枝,恨花枝,准拟花开人共卮,开时人去时。 怕相思,已相思,轮到相思没处辞,眉间露一丝。
  • 相关阅读:
    Java实现 蓝桥杯VIP 算法训练 数的统计
    Java实现 蓝桥杯VIP 算法训练 和为T
    Java实现 蓝桥杯VIP 算法训练 友好数
    Java实现 蓝桥杯VIP 算法训练 连续正整数的和
    Java实现 蓝桥杯VIP 算法训练 寂寞的数
    Java实现 蓝桥杯VIP 算法训练 学做菜
    Java实现 蓝桥杯VIP 算法训练 暗恋
    Java实现 蓝桥杯VIP 算法训练 暗恋
    测试鼠标是否在窗口内,以及测试鼠标是否在窗口停留
    RichEdit 各个版本介绍
  • 原文地址:https://www.cnblogs.com/L-Memory/p/6378243.html
Copyright © 2011-2022 走看看