HDU 2578 Dating with girls(1)

举报
Linux猿 发表于 2021/08/04 23:06:48 2021/08/04
【摘要】 题目链接~~>  做题感悟:在搜二分题时搜到它,不小心看到一个标题(二分+排序),以后不能这样找题目做了,知道方法就没意思了,其实这题很水。  解题思路:( 1 ).可以二分 + 排序(去重,也可以不去重),因为没去重错了几次 ; ( 2 ). map 可以轻松解决(时间比较长)。 代码(二分+排序): #include<stdio.h...

题目链接~~>

 做题感悟:在搜二分题时搜到它,不小心看到一个标题(二分+排序),以后不能这样找题目做了,知道方法就没意思了,其实这题很水。

 解题思路:( 1 ).可以二分 + 排序(去重,也可以不去重),因为没去重错了几次 ; ( 2 ). map 可以轻松解决(时间比较长)。

代码(二分+排序):


  
  1. #include<stdio.h>
  2. #include<algorithm>
  3. using namespace std ;
  4. int g[100005],g1[100005] ;
  5. int binary_search(int x,int y,int n) // 二分
  6. {
  7. int mid ;
  8. while(x<y)
  9. {
  10. mid=x+(y-x)/2 ;
  11. if(g1[mid]==n)
  12. return mid ;
  13. else
  14. g1[mid] > n ? y=mid : x=mid+1 ;
  15. }
  16. return -1 ;
  17. }
  18. int main()
  19. {
  20. int T,i,k,n ;
  21. scanf("%d",&T) ;
  22. while(T--)
  23. {
  24. scanf("%d%d",&n,&k) ;
  25. for(i=0 ;i<n ;i++)
  26. scanf("%d",&g[i]) ;
  27. sort(g,g+n) ;
  28. int r=1 ; g1[0]=g[0] ;
  29. for(i=1 ;i<n ;i++) // 去重
  30. if(g[i]!=g[i-1])
  31. g1[r++]=g[i] ;
  32. int num=0 ;
  33. for(i=0 ;i<r ;i++)
  34. {
  35. int a=k-g1[i] ;
  36. if(a<g1[i]) continue ;
  37. if(g1[i]*2==k)
  38. {
  39. num++ ;continue ;
  40. }
  41. int mx=binary_search(0,r,a) ;
  42. if(mx!=-1)
  43. num+=2 ;
  44. }
  45. printf("%d\n",num) ;
  46. }
  47. return 0 ;
  48. }

代码(map):


  
  1. #include<stdio.h>
  2. #include<algorithm>
  3. #include<map>
  4. using namespace std ;
  5. map<int,int>m ;
  6. int g[100005] ;
  7. int main()
  8. {
  9. int T,n,k ;
  10. scanf("%d",&T) ;
  11. while(T--)
  12. {
  13. scanf("%d%d",&n,&k) ;
  14. m.clear() ; // 一定要清空
  15. int r=0,x ;
  16. for(int i=0 ;i<n ;i++)
  17. {
  18. scanf("%d",&x) ;
  19. if(!m[x])
  20. {
  21. g[r++]=x ; m[x]=1 ;
  22. }
  23. }
  24. int num=0 ;
  25. for(int i=0 ;i<r ;i++)
  26. {
  27. if(m[k-g[i]]&&k>=g[i])
  28. num+=1 ;
  29. }
  30. printf("%d\n",num) ;
  31. }
  32. return 0 ;
  33. }


 

文章来源: blog.csdn.net,作者:Linux猿,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/nyist_zxp/article/details/17528533

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。