5-14 电话聊天狂人 (25分)

给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人。

输入格式:

输入首先给出正整数NN(\le 10^5≤10?5??),为通话记录条数。随后NN行,每行给出一条通话记录。简单起见,这里只列出拨出方和接收方的11位数字构成的手机号码,其中以空格分隔。

输出格式:

在一行中给出聊天狂人的手机号码及其通话次数,其间以空格分隔。如果这样的人不唯一,则输出狂人中最小的号码及其通话次数,并且附加给出并列狂人的人数。

输入样例:

4
13005711862 13588625832
13505711862 13088625832
13588625832 18087925832
15005713862 13588625832

输出样例:

13588625832 3

搜索树程序:

#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
typedef long long LL;
typedef struct Treenode
{
    LL str;
    int cnt;
    struct Treenode* left;
    struct Treenode* right;
}Treenode,*Tree;
Tree Newnode(LL s)
{
    Tree t = (Tree)malloc(sizeof(Treenode));
    t->str = s;
    t->cnt = 1;
    t->left = NULL;
    t->right = NULL;
    return t;
}
Tree Insert(Tree T,LL s)
{
    if(!T)
        T = Newnode(s);
    else if(T->str>s)
        T->left = Insert(T->left,s);
    else if(T->str<s)
        T->right = Insert(T->right,s);
    else
        T->cnt = T->cnt+1;
    return T;
}
void find(Tree T,LL &mins,int &maxt,int &same)
{
    if(T)
    {
        if(T->cnt > maxt)
        {
            maxt = T->cnt;
            mins = T->str;
            same = 1;
        }
        else if((T->cnt==maxt))
        {
            if(T->str<mins)
                mins = T->str;
            same++;
        }
        find(T->left,mins,maxt,same);
        find(T->right,mins,maxt,same);
    }
}
int main()
{
    int n;
    LL t1;
    Tree T;
    cin>>n;
    cin>>t1;
    T =Newnode(t1);
    for(int i=1;i<2*n;i++)
    {
        cin>>t1;
        T = Insert(T,t1);
    }
    LL ms=0;
    int mt=0,num=0;
    find(T,ms,mt,num);
    cout<<ms<<‘ ‘<<mt;
    if(num>1)
        cout<<‘ ‘<<num<<endl;
    else
        cout<<endl;
    return 0;
}

这题一开始用map超时,然后我试了试二叉搜索树,也无情超时,看来必须用hash

时间: 2024-10-02 03:14:34

5-14 电话聊天狂人 (25分)的相关文章

PTA 5-14 电话聊天狂人 (25分)

给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数NN(\le 10^5≤10?5??),为通话记录条数.随后NN行,每行给出一条通话记录.简单起见,这里只列出拨出方和接收方的11位数字构成的手机号码,其中以空格分隔. 输出格式: 在一行中给出聊天狂人的手机号码及其通话次数,其间以空格分隔.如果这样的人不唯一,则输出狂人中最小的号码及其通话次数,并且附加给出并列狂人的人数. 输入样例: 4 13005711862 13588625832 135057118

7-113 电话聊天狂人 (25分)

给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤),为通话记录条数.随后N行,每行给出一条通话记录.简单起见,这里只列出拨出方和接收方的11位数字构成的手机号码,其中以空格分隔. 输出格式: 在一行中给出聊天狂人的手机号码及其通话次数,其间以空格分隔.如果这样的人不唯一,则输出狂人中最小的号码及其通话次数,并且附加给出并列狂人的人数. 输入样例: 4 13005711862 13588625832 13505711862 13088625832 1

基础实验5-2.2 电话聊天狂人 (25分)-散列表

解题思路: 用散列表(链表结构) 1.计算散列表长度(取比输入数据大一点的素数p) 2.构造散列函数 3.读入数据,求出散列位置插入 4.一边遍历散列表,一边求出现最多的电话狂人 #include <stdio.h> #include <malloc.h> #include <string.h> #include <math.h> #define KeyLength 11 #define ElemType char typedef enum {false,t

电话聊天狂人

11-散列1 电话聊天狂人   (25分) 给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤10?5??),为通话记录条数.随后N行,每行给出一条通话记录.简单起见,这里只列出拨出方和接收方的11位数字构成的手机号码,其中以空格分隔. 输出格式: 在一行中给出聊天狂人的手机号码及其通话次数,其间以空格分隔.如果这样的人不唯一,则输出狂人中最小的号码及其通话次数,并且附加给出并列狂人的人数. 输入样例: 4 13005711862 135886258

7-14 电话聊天狂人

7-14 电话聊天狂人(25 分) 给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤10?5??),为通话记录条数.随后N行,每行给出一条通话记录.简单起见,这里只列出拨出方和接收方的11位数字构成的手机号码,其中以空格分隔. 输出格式: 在一行中给出聊天狂人的手机号码及其通话次数,其间以空格分隔.如果这样的人不唯一,则输出狂人中最小的号码及其通话次数,并且附加给出并列狂人的人数. 输入样例: 4 13005711862 13588625832 1

7-14 电话聊天狂人(25 分)

给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤10?5??),为通话记录条数.随后N行,每行给出一条通话记录.简单起见,这里只列出拨出方和接收方的11位数字构成的手机号码,其中以空格分隔. 输出格式: 在一行中给出聊天狂人的手机号码及其通话次数,其间以空格分隔.如果这样的人不唯一,则输出狂人中最小的号码及其通话次数,并且附加给出并列狂人的人数. 输入样例: 4 13005711862 13588625832 13505711862 1308862

PAT 甲级 1016 Phone Bills (25 分) (结构体排序,模拟题,巧妙算时间,坑点太多,debug了好久)

1016 Phone Bills (25 分)   A long-distance telephone company charges its customers by the following rules: Making a long-distance call costs a certain amount per minute, depending on the time of day when the call is made. When a customer starts connec

PTA数据结构与算法题目集(中文) 7-35 城市间紧急救援 (25 分)

PTA数据结构与算法题目集(中文)  7-35 城市间紧急救援 (25 分) 作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上.当其他城市有紧急求助电话给你的时候,你的任务是带领你的救援队尽快赶往事发地,同时,一路上召集尽可能多的救援队. 输入格式: 输入第一行给出4个正整数N.M.S.D,其中N(2)是城市的个数,顺便假设城市的编号为0 ~ (:M是快速道路的条数

4-9 二叉树的遍历 (25分)

4-9 二叉树的遍历   (25分) 输出样例(对于图中给出的树): Inorder: D B E F A G H C I Preorder: A B D F E C G H I Postorder: D E F B H G I C A Levelorder: A B C D F G I E H 代码:(都是遍历的算法) 1 // 4-9 二叉树的遍历 2 // 3 // Created by Haoyu Guo on 04/02/2017. 4 // Copyright ? 2017 Haoy