PAT 1039

本文介绍了一道名为PAT1039的编程题目,该题要求读取一系列ID和对应的名字组合,并通过特定算法将名字转换为整数标识符,最后统计每个标识符出现的次数并输出。代码使用C++实现,涉及字符串处理、数据结构和算法优化等方面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PAT 1039

输入

11 5
4 7
BOB5 DON2 FRA8 JAY9 KAT3 LOR6 ZOE1
1 4
ANN0 BOB5 JAY9 LOR6
2 7
ANN0 BOB5 FRA8 JAY9 JOE4 KAT3 LOR6
3 1
BOB5
5 9
AMY7 ANN0 BOB5 DON2 FRA8 JAY9 KAT3 LOR6 ZOE1
ZOE1 ANN0 BOB5 JOE4 JAY9 FRA8 DON2 AMY7 KAT3 LOR6 NON9

输出

ZOE1 2 4 5
ANN0 3 1 2 5
BOB5 5 1 2 3 4 5
JOE4 1 2
JAY9 4 1 2 4 5
FRA8 3 2 4 5
DON2 2 4 5
AMY7 1 5
KAT3 3 2 4 5
LOR6 4 1 2 4 5
NON9 0
#include <cstdio>
#include <iostream>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <cmath>
#include <string>
#include <cstring>
#include <set>

using namespace std;





int change(char c[])
{
    int res=0;

    for(int i=0;i<3;i++)
    {
        res=res*26 + c[i]-'A';

    }


    res=res*10+c[3]-'0';

    return res;


}



const int maxn=26*26*26*10+1;

set<int> a[maxn];





int main()
{
    int n,k;
    int id,num;

    char name[5];


    scanf("%d%d",&n,&k);

    for(int i=0;i<k;i++)
    {


        scanf("%d%d",&id,&num);



        for(int i=0;i<num;i++)
        {
            scanf("%s",name);

            int temp=change(name);

            a[temp].insert(id);



        }




    }


    for(int i=0;i<n;i++)
    {
        scanf("%s",name);

        int temp=change(name);

        printf("%s %d",name,a[temp].size());

        for( auto x:a[temp]  )
        {
            printf(" %d",x);

        }

        printf("\n");


    }




    return 0;
}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值