当前位置:   article > 正文

数据结构与算法题目集(中文) - 7-14 电话聊天狂人(25 分)_7-1 电话聊天狂人 分数 25 作者 ds课程组 单位 浙江大学 给定大量手机用户通话记

7-1 电话聊天狂人 分数 25 作者 ds课程组 单位 浙江大学 给定大量手机用户通话记

题目链接:点击打开链接

题目大意:

解题思路:hash,自定义hash规则 + 结构体数组 + 结构体中的每个链表。

AC 代码

  1. #include<bits/stdc++.h>
  2. #include<cmath>
  3. #define mem(a,b) memset(a,b,sizeof a);
  4. #define INF 0x3f3f3f3f
  5. using namespace std;
  6. typedef long long ll;
  7. const int maxn=1e5+100;
  8. ll mi_tel,ma_Cnt;
  9. int mergeCnt;
  10. struct node
  11. {
  12. ll tel;
  13. int cnt;
  14. node *next;
  15. }nds[maxn];
  16. void init()
  17. {
  18. ma_Cnt=0;
  19. mergeCnt=1;
  20. mi_tel=LLONG_MAX;
  21. for(int i=0;i<maxn;i++)
  22. {
  23. nds[i].tel=-1;
  24. nds[i].cnt=0;
  25. nds[i].next=NULL;
  26. }
  27. }
  28. node * findTel(ll tel)
  29. {
  30. node * nd;
  31. // 自定义hash规则
  32.     // TEL:130 0571 1862
  33.     // -> tel[9] + tel[10] + tel[7] + tel[1] + tel[2]
  34.     // -> 62130
  35. int idx=0;
  36. idx+=tel%100;
  37. idx=idx*10+tel/10000%10;
  38. idx=idx*100+tel/100000000%100;
  39. // cout<<"idx = "<<idx<<endl;
  40. nd=&nds[idx];
  41. if(nd->tel==-1)
  42. {
  43. nd->tel=tel;
  44. return nd;
  45. }
  46. while(nd->tel!=tel)
  47. {
  48. if(nd->next==NULL)
  49. {
  50. nd->next=(node*)malloc(sizeof(node));
  51. nd=nd->next;
  52. nd->next=NULL;
  53. nd->tel=tel;
  54. nd->cnt=0;
  55. break;
  56. }
  57. else
  58. nd=nd->next;
  59. }
  60. return nd;
  61. }
  62. void insert(ll tel)
  63. {
  64. node * nd=findTel(tel);
  65. nd->cnt++;
  66. if(nd->cnt>ma_Cnt)
  67. {
  68. ma_Cnt++;
  69. mergeCnt=1;
  70. mi_tel=tel;
  71. }
  72. else if(nd->cnt==ma_Cnt)
  73. {
  74. mergeCnt++;
  75. if(tel<mi_tel) mi_tel=tel;
  76. }
  77. }
  78. int main()
  79. {
  80. int n;
  81. while(~scanf("%d",&n))
  82. {
  83. init();
  84. ll tel1,tel2;
  85. for(int i=0;i<n;i++)
  86. {
  87. scanf("%lld%lld",&tel1,&tel2);
  88. insert(tel1);
  89. insert(tel2);
  90. }
  91. printf("%lld %d",mi_tel,ma_Cnt);
  92. if(mergeCnt>1) printf(" %d",mergeCnt);
  93. puts("");
  94. }
  95. return 0;
  96. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/782550
推荐阅读
相关标签
  

闽ICP备14008679号