题目链接

https://atcoder.jp/contests/agc032/tasks/agc032_e

题解

猜结论好题。
结论是: 按\(a_i\)从小到大排序之后,一定存在一种最优解,使得以某个位置为界,两边分别首尾匹配,且满足左边的每一对的和都\(<M\), 右边每一对的和都\(\ge M\).
证明不难,可参考官方题解,此处不再赘述。
然后显然可以枚举这个临界点,然后\(O(n)\)暴力计算答案,时间复杂度\(O(n^2)\).
考虑优化: 在我们配对的时候,当临界点右移,左右两侧的每一对和都会变大。
于是我们只需找到最小的合法临界点,即是最优解。
二分找即可,时间复杂度\(O(n\log n)\).

代码

#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<cassert>
#include<algorithm>
using namespace std;const int N = 2e5;
int a[N+3];
int n,m;int main()
{scanf("%d%d",&n,&m);for(int i=1; i<=n+n; i++) scanf("%d",&a[i]);sort(a+1,a+n+n+1);int left = 0,right = n;while(left<right){int mid = left+((right-left)>>1);bool ok = true;for(int i=mid*2+1; i<=n+n; i++){if(a[i]+a[n+n+mid+mid+1-i]<m) {ok = false; break;}}if(ok==true) {right = mid;}else {left = mid+1;}}int pos = 2*right;int ans = 0;for(int i=1; i<=pos; i++) ans = max(ans,a[i]+a[pos+1-i]);for(int i=pos+1; i<=n+n; i++) ans = max(ans,(a[i]+a[n+n+pos+1-i])-m);printf("%d\n",ans);return 0;
}

AtCoder AGC032E Modulo Pairing (二分、贪心与结论)相关推荐

  1. AtCoder AGC032E Modulo Pairing (二分、贪心结论)

    题目链接 https://atcoder.jp/contests/agc032/tasks/agc032_e 题解 猜结论好题. 结论是: 按\(a_i\)从小到大排序之后,一定存在一种最优解,使得以 ...

  2. 蒟蒻的第一篇博客CF1041C Coffee Break(二分+贪心+set)

    CF1041C Coffee Break(二分+贪心+set) 描述 Recently Monocarp got a job. His working day lasts exactly mm min ...

  3. 洛谷P1182 数列分段 Section II(二分+贪心)

    题目描述 对于给定的一个长度为N的正整数数列 A1∼NA _{1∼N}A1∼N​,现要将其分成 M(M≤N)M(M≤N)M(M≤N)段,并要求每段连续,且每段和的最大值最小. 关于最大值最小: 例如一 ...

  4. AtCoder - 4172 Modulo Summation 贪心

    开始想复杂的了 仔细观察样例后发现这个数 其实就是所有的数的LCM-1吗 只有LCM-1 对所有数取模的时候才能对所有数得到MOD = a[i]-1: 那么一个X%Y得到的最大值就是Y-1 于是得到了 ...

  5. 外卖(food) 洛谷4040宅男计划 三分套二分贪心

    food评测传送门 [题目描述] 叫外卖是一个技术活,宅男宅女们一直面对着一个很大的矛盾,如何以有限的金钱在宿舍宅得尽量久.     外卖店一共有 N 种食物,每种食物有固定的价钱 Pi 与保质期 S ...

  6. CodeForces - 507E Breaking Good(二分+贪心)

    题目链接:点击查看 题目大意:给出 n 个竹子,初始时高度为 h[ i ],接下来每一天每个竹子都会长高 a[ i ] 个单位的高度,每一天可以砍 k 次竹子(可以是同一个),每次可以砍掉 p 个单位 ...

  7. CF1169C. Increasing by Modulo(二分)

    linkkkkk 题意: 给出 n , k n,k n,k和数组 a a a,每次都可以选出若干个元素让他们的值变成 ( a i + 1 ) m o d k (a_i+1)\mod k (ai​+1) ...

  8. [USACO16JAN]Angry Cows S[二分+贪心]

    题意:Bessie 设计了一款新游戏:Angry Cows.在这个游戏中,玩家发射奶牛,每头奶牛落地时引爆一定范围内的干草.游戏的目标是使用一组奶牛引爆所有干草. N 捆干草排列在数轴上的不同位置.第 ...

  9. BZOJ2525 [Poi2011]Dynamite 【二分 + 贪心】

    题目链接 BZOJ2525 题解 就是要求所有有炸弹的点到点燃点距离最大值最小 显然二分答案距离\(D\) 然后按深度排序,贪心点燃当前没覆盖的深度最深的点往上第\(D\)层的点 每覆盖一个点要标记其 ...

最新文章

  1. Open Images冠军,商汤提出解偶检测分支新方法TSD并入选CVPR 2020
  2. 部署node.js的开发环境
  3. 2018091-2博客作业
  4. Redis 分布式缓存 Java 框架
  5. Factors 分解质因数
  6. 国内各大平台的推荐算法,看到360的时候笑喷了……
  7. Web Service简介
  8. internetreadfile读取数据长度为0_YOLOV3的TensorFlow2.0实现,支持在自己的数据集上训练...
  9. 数论 —— 高次同余方程与 BSGS 算法
  10. PHP 命令行?是的,您可以!
  11. Docker学习总结(31)——使用Maven插件构建docker镜像
  12. aspnet还有人用吗_微信公众号软件安装管家会员真的那么好吗
  13. 【软件测试】你的简历出现这些问题?没人要也是有原因的
  14. Hibernate笔记①--myeclipse制动配置hibernate
  15. 嵌入式开发之GCC编译器使用
  16. 联发科MT2503芯片资料MT2503原理图
  17. [读书笔记]《你的灯亮着吗?》
  18. 华中数控808系统说明书_国产数控系统的性能水平
  19. ubuntu中耳机声音小的解决方案
  20. Residual Attention: A Simple but Effective Method for Multi-Label Recognition论文阅读笔记

热门文章

  1. 135 页的《机器学习速查手册》,公式、图表都有,附下载!
  2. MNIST机器学习入门(学习记录)——1
  3. 有监督分类:集成分类(Bagging Boosting RandomForest)
  4. VTK修炼之道78:交互与拾取_点拾取
  5. PIC单片机精通_异步串口通讯实例与细节
  6. 让iis支持下载apk,ipa文件
  7. Delphi中JSon SuperObject 使用:数据集与JSON对象互转
  8. C++中头文件的命名规则
  9. Delphi中TVarRec做为参数的用法
  10. BSS段,数据段,代码段,堆内存和栈