(两个数的和用二分接近mod)

题意:

给出n,p,n个数,从中取两个数 a,b , 求出( a + b )% p 的最大值。

解析:

先把每个数%p , 可以发现两个数加起来,要么 < p,要么 ≥ p,然后小于 2p。 
那么对于大于p的,必定是最大那两个数加起来%p,满足贪心的。

小于p的话,就可以直接找,二分可以,因为满足单调性。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 100005;
ll n,p,a[N];
inline void read(ll &x) {int flag = 0;x = 0;char c = getchar();if(c == '-')flag = 1;while(c < '0' || c > '9') {if(c == '-')flag = 1;c = getchar();}while(c >= '0' && c <= '9')x = x * 10 + c - '0', c = getchar();if(flag) x = -x;
}
int main() {while(~scanf("%lld%lld", &n, &p)) {ll maxz = 0;for(int i = 0; i < n; i++) {read(a[i]);a[i] %= p;maxz = max(maxz, a[i]);}sort(a, a+n);ll ans = (a[n-1] + a[n-2]) % p;for(int i = 0; i < n-1; i++) {ll val = p - a[i] - 1;int pos = upper_bound(a, a+i-1, val)-a-1;
/* 对于upper_bound来说,返回的是被查序列中第一个大于查找值的指针,也就是返回指向被查值>查找值的最小指针,
lower_bound则是返回的是被查序列中第一个大于等于查找值的指针,也就是返回指向被查值>=查找值的最小指针。 */if(pos == -1) {ans = max(ans, (a[i] + maxz) % p);}else {ans = max(ans, (a[pos] + a[i]) % p);}}printf("%lld\n", ans);}return 0;
}

pog loves szh II_(HDU-5265)相关推荐

  1. 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? ...

  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 5264 pog loves szh I

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

  4. 【HDU】5267 pog loves szh IV【动态点分治】

    传送门:[HDU]5267 pog loves szh IV 题目分析:首先我们用树分治,对每一个分治重心,以此为根的子树,建立一棵线段树.可以发现总节点数只有$O(NlogN)$,因为每一层都是$N ...

  5. HDU 5266 pog loves szh III【LCA RMQ】

    B - pog loves szh III 题目:添加链接描述 题意:找出区域l到r的LCA->找l和r的LCA 分析: 链式前向星存树,先用dfs处理结点倍增关系. 然后从循环处理较深结点,直 ...

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

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

  7. 字符串处理 BestCoder Round #43 1001 pog loves szh I

    题目传送门 1 /* 2 字符串处理:是一道水题,但是WA了3次,要注意是没有加'\0'的字符串不要用%s输出,否则在多组测试时输出多余的字符 3 */ 4 #include <cstdio&g ...

  8. BestCoder Round #43 第二题 pog loves szh II

    pog loves szh II  Accepts: 219  Submissions: 834  Time Limit: 4000/2000 MS (Java/Others)  Memory Lim ...

  9. HDU - 5265 pog loves szh II (二分或者贪心)

    这题有两种做法,一种是二分,我很快就想到了(nlogn的复杂度,10^6的n). 第二种就是贪心了,我觉得这个不那么容易想到,好像速度要快一些. 首先,我们找答案的两个数x,y,有两种,一种是x+y& ...

最新文章

  1. servlet必知细节(二)--servlet执行过程
  2. 干货:Android 源码使用心得分享
  3. Lumen配置文件按需加载出现的坑
  4. 【redis】布隆过滤器详解
  5. jvm性能调优 - 06线上应用部署JVM实战_堆内存预估与设置
  6. 代理模式详解(静态代理和动态代理的区别以及联系)
  7. 前端快闪三:多环境灵活配置react
  8. ami编码设计流程图_专用设备转向系统电控单元设计
  9. webview重新加载(reload)或者发起 redirect request导致js和objc代码之间的bridge失联解决方案(亲测有效)
  10. 《云计算:原理与范式》一3.6 新集成方案
  11. Visio2016 安装教程
  12. 教你用一行代码伪装黑客
  13. OpenCV图像的基本操作
  14. Java前叉夹器_新手知识:为什么说公路直装夹器更好呢?
  15. 波束赋形技术lms算法在matlab仿真,自适应波束成形算法LMS、RLS、VSSLMS分解
  16. 多台电脑共享上网的方法:在Windows XP中设置Internet连接共享
  17. 【更新】【Windows Server 2019】存储服务器的配置和管理——iSCSI的安装和配置(上)
  18. 景甜成为特步新晋品牌代言人
  19. iOS app脚手架
  20. ISO OSI IOS 傻傻分不清楚【每日打卡小知识】

热门文章

  1. Linux找回root用户密码
  2. 【Qt】实现波浪动画效果
  3. react proptypes
  4. 合并两个List并去掉重复项
  5. 苏姿丰博士专访:突破CPU与GPU极限,AMD正火力全开
  6. 小米超神服务器维护中,【体验服】《小米超神》体验服8月15日停服维护更新公告...
  7. mysql MVCC不能避免幻读
  8. CMStudio 计算机组成原理课程设计报告 基本模型机的设计与实现 来自____王peng_____老师的模板
  9. winform简单的向richTextBox插入表格
  10. H264 X264_【资料汇编】不同视频编码器质量对比——NVENC、QuickSync、X264和X265