【题目链接】click here~~

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

【解题思路】:

思路见官方题解吧~~

弱弱献上代码:

Problem : 5265 ( pog loves szh II )     Judge Status : Accepted
RunId : 13961817 Language : G++ Author : javaherongwei
Code Render Status : Rendered By HDOJ G++ Code Render Version 0.01 Beta #include <stdio.h>
#include <math.h>
#include <string.h>
#include <iostream>
#include <algorithm>
using namespace std;
const int N=1e6;
__int64 num[N],n,m,p,k,ans,cnt,sum;
int my_pow(int a,int n,int mod)
{
int ans=a,tmp=1;
while(n)
{
if(n&1) tmp*=ans;
ans*=ans%mod;
n>>=1;
}
return tmp;
}
int main()
{
while(~scanf("%I64d%I64d",&n,&p))
{
for(int i=0; i<n; ++i)
{
scanf("%I64d",&num[i]);
num[i]%=p;
}
sort(num,num+n);
__int64 maxx=(num[n-1]+num[n-2])%p;///另外一种情况最大值
__int64 maxx2;
for(int i=0; i<n; ++i)
{
maxx2=upper_bound(num,num+n,p-num[i]-1)-num-1;
if((num[i]+num[maxx2])<p&&(maxx2>i))
maxx=max((num[i]+num[maxx2])%p,maxx);
}
printf("%I64d\n",maxx);
}
return 0;
}
/*
因为序列中的数可能超过P,所以将全部的数读入后进行取模操作。
之后将取模后的全部数从小到大排序。题目要求我们求不同位置的两个数的和在取模意义下的最大值。
而如今全部数都是小于P且排好序的。因此设我随意选了两个数是X和Y,显然0≤X+Y≤2P−2。
若X+Y<P,则这次选数的答案就是X+Y,若X+Y≥P。则答案是X+Y−P。
那么我们能够这样做:将当中最大的两个数字相加取模,设为一个可能的答案记录在ANS中。 这个答案是另外一种情况的最大值。再对排序好的序列进行枚举,对每一个枚举到的数,
找出最大的数,使这个数与枚举到的数相加后的和最大且小于P,将之记为可能的答案并于之前找到的最大值ANS进行比較。 这个答案是第一种情况中的可能的最大值。而普通的枚举是要超时的,可是我们发现假设从小到大枚举第一个数,
那么还有一个匹配的数显然是从大到小的,因此能够用一个NOW记录当前还有一个匹配的数的位置,
每次枚举时NOW递减至符合条件。能够做到O(n)的时间复杂度。
综上所述,时间复杂度为高速排序的O(nlogn),空间复杂度为O(n)。注意一些特殊情况如同一个位置不能多次选。 4 4
1 2 3 0
4 4
0 0 2 2
Sample Output
3
2
*/

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. (转)淘淘商城系列——KindEditor富文本编辑器的使用

    http://blog.csdn.net/yerenyuan_pku/article/details/72809794 通过上文的学习,我们知道了怎样解决KindEditor富文本编辑器上传图片时的浏 ...

  2. hibernate cascade属性

    cascade属性是存在于set标签中,用来做级联删除和保存. 它的值有以下几种: 1)默认值是none,不做级联动作: 2)save-update:级联保存 3)delete:级联删除 4)all: ...

  3. netstat -a 显示出你的计算机当前所开放的所有端口

    netstat -s -e 比较详细的显示你的网络资料,包括TCP.UDP.ICMP 和 IP的统计等 

  4. console.log()与console.dir()

    console.log()可以取代alert()或document.write(),在网页脚本中使用console.log()时,会在浏览器控制台打印出信息. console.dir()可以显示一个对 ...

  5. hdfs的特性、命令、安全模式、基准测试

    1.第一点:如何理解hdfs分布式文件系统,每台机器出一块磁盘,凑成一个大的硬盘,大的硬盘的容量来自各个服务器的硬盘容量之和. 你出5毛,我出5毛,大家凑成1块. 2. HDFS 是 Hadoop D ...

  6. GRPC在NET上的应用

    GRPC是什么? GRPC是一个开源RPC框架,于2015年3月开源,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于Protobuf 3.0(Protocol Buffer ...

  7. 编译压缩代码 MFCompress-src-1.01 :对‘***’未定义的引用

    提示 MFCompressD.o:在函数‘main’中:MFCompressD.c:(.text.startup+0x34a): 警告: the use of `tempnam' is dangero ...

  8. 数据库中的Schema是什么?

    在数据库中,schema(发音 “skee-muh” 或者“skee-mah”,中文叫模式)是数据库的组织和结构,schemas andschemata都可以作为复数形式.模式中包含了schema对象 ...

  9. forEach的使用方法

    [-] 1  js 数组循环遍历 2  forEach 函数 3  让IE兼容forEach方法 4 如何跳出循环   1.  js 数组循环遍历. 数组循环变量,最先想到的就是 for(var i= ...

  10. router-link的使用方法

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...