AtCoder AGC032E Modulo Pairing (二分、贪心与结论)
题目链接
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 (二分、贪心与结论)相关推荐
- AtCoder AGC032E Modulo Pairing (二分、贪心结论)
题目链接 https://atcoder.jp/contests/agc032/tasks/agc032_e 题解 猜结论好题. 结论是: 按\(a_i\)从小到大排序之后,一定存在一种最优解,使得以 ...
- 蒟蒻的第一篇博客CF1041C Coffee Break(二分+贪心+set)
CF1041C Coffee Break(二分+贪心+set) 描述 Recently Monocarp got a job. His working day lasts exactly mm min ...
- 洛谷P1182 数列分段 Section II(二分+贪心)
题目描述 对于给定的一个长度为N的正整数数列 A1∼NA _{1∼N}A1∼N,现要将其分成 M(M≤N)M(M≤N)M(M≤N)段,并要求每段连续,且每段和的最大值最小. 关于最大值最小: 例如一 ...
- AtCoder - 4172 Modulo Summation 贪心
开始想复杂的了 仔细观察样例后发现这个数 其实就是所有的数的LCM-1吗 只有LCM-1 对所有数取模的时候才能对所有数得到MOD = a[i]-1: 那么一个X%Y得到的最大值就是Y-1 于是得到了 ...
- 外卖(food) 洛谷4040宅男计划 三分套二分贪心
food评测传送门 [题目描述] 叫外卖是一个技术活,宅男宅女们一直面对着一个很大的矛盾,如何以有限的金钱在宿舍宅得尽量久. 外卖店一共有 N 种食物,每种食物有固定的价钱 Pi 与保质期 S ...
- CodeForces - 507E Breaking Good(二分+贪心)
题目链接:点击查看 题目大意:给出 n 个竹子,初始时高度为 h[ i ],接下来每一天每个竹子都会长高 a[ i ] 个单位的高度,每一天可以砍 k 次竹子(可以是同一个),每次可以砍掉 p 个单位 ...
- 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) ...
- [USACO16JAN]Angry Cows S[二分+贪心]
题意:Bessie 设计了一款新游戏:Angry Cows.在这个游戏中,玩家发射奶牛,每头奶牛落地时引爆一定范围内的干草.游戏的目标是使用一组奶牛引爆所有干草. N 捆干草排列在数轴上的不同位置.第 ...
- BZOJ2525 [Poi2011]Dynamite 【二分 + 贪心】
题目链接 BZOJ2525 题解 就是要求所有有炸弹的点到点燃点距离最大值最小 显然二分答案距离\(D\) 然后按深度排序,贪心点燃当前没覆盖的深度最深的点往上第\(D\)层的点 每覆盖一个点要标记其 ...
最新文章
- Open Images冠军,商汤提出解偶检测分支新方法TSD并入选CVPR 2020
- 部署node.js的开发环境
- 2018091-2博客作业
- Redis 分布式缓存 Java 框架
- Factors 分解质因数
- 国内各大平台的推荐算法,看到360的时候笑喷了……
- Web Service简介
- internetreadfile读取数据长度为0_YOLOV3的TensorFlow2.0实现,支持在自己的数据集上训练...
- 数论 —— 高次同余方程与 BSGS 算法
- PHP 命令行?是的,您可以!
- Docker学习总结(31)——使用Maven插件构建docker镜像
- aspnet还有人用吗_微信公众号软件安装管家会员真的那么好吗
- 【软件测试】你的简历出现这些问题?没人要也是有原因的
- Hibernate笔记①--myeclipse制动配置hibernate
- 嵌入式开发之GCC编译器使用
- 联发科MT2503芯片资料MT2503原理图
- [读书笔记]《你的灯亮着吗?》
- 华中数控808系统说明书_国产数控系统的性能水平
- ubuntu中耳机声音小的解决方案
- Residual Attention: A Simple but Effective Method for Multi-Label Recognition论文阅读笔记