【题目链接】click here~~

【题目大意】在给定 的数组里选两个数取模p的情况下和最大

【解题思路】:

思路见官方题解吧~~

弱弱献上代码:

  1. Problem : 5265 ( pog loves szh II ) Judge Status : Accepted
  2. RunId : 13961817 Language : G++ Author : javaherongwei
  3. Code Render Status : Rendered By HDOJ G++ Code Render Version 0.01 Beta
  4.  
  5. #include <stdio.h>
  6. #include <math.h>
  7. #include <string.h>
  8. #include <iostream>
  9. #include <algorithm>
  10. using namespace std;
  11. const int N=1e6;
  12. __int64 num[N],n,m,p,k,ans,cnt,sum;
  13. int my_pow(int a,int n,int mod)
  14. {
  15. int ans=a,tmp=1;
  16. while(n)
  17. {
  18. if(n&1) tmp*=ans;
  19. ans*=ans%mod;
  20. n>>=1;
  21. }
  22. return tmp;
  23. }
  24. int main()
  25. {
  26. while(~scanf("%I64d%I64d",&n,&p))
  27. {
  28. for(int i=0; i<n; ++i)
  29. {
  30. scanf("%I64d",&num[i]);
  31. num[i]%=p;
  32. }
  33. sort(num,num+n);
  34. __int64 maxx=(num[n-1]+num[n-2])%p;///另外一种情况最大值
  35. __int64 maxx2;
  36. for(int i=0; i<n; ++i)
  37. {
  38. maxx2=upper_bound(num,num+n,p-num[i]-1)-num-1;
  39. if((num[i]+num[maxx2])<p&&(maxx2>i))
  40. maxx=max((num[i]+num[maxx2])%p,maxx);
  41. }
  42. printf("%I64d\n",maxx);
  43. }
  44. return 0;
  45. }
  46. /*
  47. 因为序列中的数可能超过P,所以将全部的数读入后进行取模操作。
  48. 之后将取模后的全部数从小到大排序。题目要求我们求不同位置的两个数的和在取模意义下的最大值。
  49. 而如今全部数都是小于P且排好序的。因此设我随意选了两个数是X和Y,显然0≤X+Y≤2P−2。
  50. 若X+Y<P,则这次选数的答案就是X+Y,若X+Y≥P。则答案是X+Y−P。
  51. 那么我们能够这样做:将当中最大的两个数字相加取模,设为一个可能的答案记录在ANS中。
  52.  
  53. 这个答案是另外一种情况的最大值。再对排序好的序列进行枚举,对每一个枚举到的数,
  54. 找出最大的数,使这个数与枚举到的数相加后的和最大且小于P,将之记为可能的答案并于之前找到的最大值ANS进行比較。
  55.  
  56. 这个答案是第一种情况中的可能的最大值。而普通的枚举是要超时的,可是我们发现假设从小到大枚举第一个数,
  57. 那么还有一个匹配的数显然是从大到小的,因此能够用一个NOW记录当前还有一个匹配的数的位置,
  58. 每次枚举时NOW递减至符合条件。能够做到O(n)的时间复杂度。
  59. 综上所述,时间复杂度为高速排序的O(nlogn),空间复杂度为O(n)。注意一些特殊情况如同一个位置不能多次选。
  60.  
  61. 4 4
  62. 1 2 3 0
  63. 4 4
  64. 0 0 2 2
  65. Sample Output
  66. 3
  67. 2
  68. */

HDU 5265 pog loves szh II (二分查找)的更多相关文章

  1. HDU 5265 pog loves szh II 二分

    题目链接: hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5265 bc(中文):http://bestcoder.hdu.edu.cn/contests ...

  2. hdu 5265 pog loves szh II

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5265 pog loves szh II Description Pog and Szh are pla ...

  3. hdu 5265 pog loves szh II STL

    pog loves szh II Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php? ...

  4. HDU 5265 pog loves szh II (技巧)

    题意:给一个数字序列,要求再其中找到两个数,其和再模p的结果是最大的,求此和. 思路:先将输入的元素模p,排序.结果可能有两种情况: (1)a+b大于p:肯定由两个最大的数之和来产生. (2)a+b小 ...

  5. 贪心/二分查找 BestCoder Round #43 1002 pog loves szh II

    题目传送门 /* 贪心/二分查找:首先对ai%=p,然后sort,这样的话就有序能使用二分查找.贪心的思想是每次找到一个aj使得和为p-1(如果有的话) 当然有可能两个数和超过p,那么an的值最优,每 ...

  6. hdu 5266 pog loves szh III(lca + 线段树)

    I - pog loves szh III Time Limit:6000MS     Memory Limit:131072KB     64bit IO Format:%I64d & %I ...

  7. hdu 5264 pog loves szh I

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5264 pog loves szh I Description Pog has lots of stri ...

  8. hdu 5264 pog loves szh I 水题

    pog loves szh I Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?p ...

  9. HDU 5266 pog loves szh III(区间LCA)

    题目链接 pog loves szh III 题意就是  求一个区间所有点的$LCA$. 我们把$1$到$n$的$DFS$序全部求出来……然后设$i$的$DFS$序为$c[i]$,$pc[i]$为$c ...

随机推荐

  1. CE工具里自带的学习工具--第五关

    图解: 此时会弹出一个对话框,选择是就可以了,最终会看到:

  2. 使用GetLogicalDriveStrings获取卷标

    #include <windows.h> #include <stdio.h> #define BUFSIZE 512 int main() { TCHAR szTemp[BU ...

  3. CAD参数绘制mcdbsolid对象(com接口)

    C#中实现代码说明: private void DrawSolid() { //绘McDbSolid对象 axMxDrawX1.AddLinetype("MLineType1", ...

  4. [WDS] Warnings while compiling. vue项目运行控制台输出太多警告信息

    vue项目运行控制台输出太多警告信息,我们需要vue 忽略警告,如Expected indentation of 0 spaces but found 2 这种警告都提示,很影响视觉体验!     解 ...

  5. 【原】tcpdump命令

    1.常用参数总结 tcpdump tcpdump -i  (网卡) tcpdump -nn  (数字的方式显示IP和端口.一个n是ip) tcpdump -c x   (抓包数量,x为数字) tcpd ...

  6. Delphi最简化异步选择TCP服务器

    网上Delphi的Socket服务器优良代码,实在少见,索性写个简化的异步Socket服务器,虽然代码较少,但却该有的都有了,使用的是异步选择WSAAsyncSelect,减少了编写线程的繁琐.可能会 ...

  7. 色码表 Color code table

    最近打算更新设计博客页面,需要用到CSS色码表,查了一些资料现转载此处以备以后使用,点击此处查看原文,另外还发现了几个不错的网站: color-hex HTML颜色代码 色碼表 色碼表英文為 Colo ...

  8. IDEA下Eclipse快捷键

  9. centos7安装kvm虚拟机

    一 centos7安装kvm虚拟机 1.验证CPU是否支持KVM 结果中有vmx(Intel)或svm(AMD)字样,就说明CPU的支持的. [root@centos ~]# egrep '(vmx| ...

  10. 树莓派 - wiringPi

    wiringPi其实和BCM2835 library类似,也是通过memmap, IOmap来实现在用户空间直接操作底层寄存器 wiringPi http://wiringpi.com/ Wiring ...