POJ 3579 二分答案

文章目录

  • POJ 3579 二分答案
    • 题目
    • 思路
    • 代码

题目

思路

排序,二分一下答案,然后对于每一个元素看一看加上这个答案tmp之后,在数列里面排在哪里,比a[i]+tmp大的数字和a[i]的差值肯定比tmp大,统计一下就行
一开始用lower_bound统计,但是还需要考虑等于的关系,如果涉及麻烦的可以换思路用upper_bound统计,然后还有一个地方就是一半是n * (n-1) / 4 不是除以2
细节方面有很多地方有问题,要严谨

代码

#include <iostream>
#include <cstdio>
#include <set>
#include <list>
#include <vector>
#include <stack>
#include <queue>
#include <map>
#include <string>
#include <sstream>
#include <algorithm>
#include <cstring>
#include <cstdlib>
#include <cctype>
#include <cmath>
#include <fstream>
#include <iomanip>
//#include <unordered_map>
using namespace std;
#define dbg(x) cerr << #x " = " << x << endl;
typedef pair<int, int> P;
typedef long long ll;
#define FIN freopen("in.txt", "r", stdin);ll n;
const int MAXN = 1e5+ 5;
ll a[MAXN];ll judge(ll mid)
{ll cnt = 0;for(int i = 0; i < n; i++){ll tmp = a[i] + mid;int pos = upper_bound(a, a+n, tmp) - a;cnt += n - pos;}//dbg(cnt);return cnt > n*(n - 1) / 4;}
int main()
{//FIN;ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);while(~scanf("%d", &n)){ll maxx = -1;for(int i = 0; i < n; i++){scanf("%lld", &a[i]);}sort(a, a+n);ll l = 0, r = a[n-1] - a[0];while(l < r){ll mid = (l + r) >> 1;//dbg(mid);if(judge(mid)){l = mid + 1;}else{r = mid;}} printf("%lld\n", l);}
}

POJ 3579 二分答案相关推荐

  1. POJ 3579 二分

    题意 传送门 POJ 3579 先处理掉绝对值.对数列升序排序,则绝对值可化为 Xi−Xj,j<iX_{i}-X_{j},j<iXi​−Xj​,j<i 根据等差数列求和公式,对于偶数 ...

  2. poj 1743 二分答案+后缀数组 求不重叠的最长重复子串

    题意:给出一串序列,求最长的theme长度 (theme:完全重叠的子序列,如1 2 3和1 2 3  or  子序列中每个元素对应的差相等,如1 2 3和7 8 9) 要是没有差相等这个条件那就好办 ...

  3. poj 1064 java_poj 1064(二分答案)

    题意: 有N条绳子,长度分别为 length[1,2,3,........,N]. 如果从它们中切割出K条长度相同的绳子,这K条绳子每条最长有多长? 结果保留两位小数. 题解: 二分可能的长度. AC ...

  4. POJ 2018 Best Cow Fences (二分答案构造新权值 or 斜率优化)

    $ POJ~2018~Best~Cow~ Fences $(二分答案构造新权值) $ solution: $ 题目大意: 给定正整数数列 $ A $ ,求一个平均数最大的长度不小于 $ L $ 的子段 ...

  5. poj 3258 River Hopscotch 二分答案

    题目地址: http://poj.org/problem?id=3258 题目思路: 首先,如果只减少一部,那么一定要干掉最短的那段距离(一旦不消灭,最小的还是它,并没有达到使最小值取最大的理想情况) ...

  6. POJ 1064 Cable master (二分答案)

    题目链接:http://poj.org/problem?id=1064 有n条绳子,长度分别是Li.问你要是从中切出m条长度相同的绳子,问你这m条绳子每条最长是多少. 二分答案,尤其注意精度问题.我觉 ...

  7. (POJ - 3579)Median(二分)

    中文题意:现在有N个神秘的数字(A1,A2,A3-.An),我们需要从这串数字中得到一个密码. 得到密码的方式为: 先计算每个数字之间的差:|Ai-Aj|(1<=i<j<=N),最后 ...

  8. POJ - 2018 二分+单调子段和

    依然是学习分析方法的一道题 求一个长度为n的序列中的一个平均值最大且长度不小于L的子段,输出最大平均值 最值问题可二分,从而转变为判定性问题:是否存在长度大于等于L且平均值大于等于mid的字段和 每个 ...

  9. POJ2018-Best Cow Fences【实数二分答案】

    正题 题目链接:http://poj.org/problem?id=2018 大意 有n个数,一段长度不小于L的子段,使他们的平均值最大. 解题思路 二分答案,然后一遍暴力用最大子段和的方法求出是否可 ...

最新文章

  1. AB1601之iic驱动改造
  2. 为了支持AOP的编程模式,我为.NET Core写了一个轻量级的Interception框架[开源]
  3. linux svn可视化工具,CentOS6.5安装SVN 可视化管理工具iF.SVNAdmin
  4. 解决摹客iDoc插件在Sketch中无法正常使用,切图和标注尺寸不一致的问题
  5. 放弃用了7年的MyBatis !我选择 JDBCTemplate!
  6. 智慧交通之智能红绿灯调控系统分析
  7. 通过Modbus转EtherNetIP网关连接AB PLC的配置案例
  8. 小工具 | 横断面面积及土方量计算excel表格
  9. ESP8266-Arduino编程实例-L3GD20三轴角速率传感器驱动
  10. echarts常见图形-横向柱状图(六)
  11. 7-14 设计一个风扇Fan类 (20 分)
  12. 使用了3年多的华硕笔记本电脑fl5900uq7500电脑感受-提示已接通电源、正在放电抓狂问题
  13. linux系统如何扩展屏幕,大神教你用 autoplank 在多个显示器上使用 Plank 扩展坞
  14. 微信小程序开发入门教程(十二)
  15. git tag怎么使用_这才是真正的 Git:Git 内部原理揭秘!
  16. 【PyG2Plot】来试一下蚂蚁开源的图表库PyG2Plot效果如何~~
  17. 计算机芯片的主要用途,汽车电脑芯片30343的主要作用是什么??
  18. 思泰克在创业板过会:拟募资4亿元,赛富投资、传音控股等为股东
  19. mmap/munmap函数详解
  20. vivox21android版本9升级,vivo X21 UD升级安卓9无限重启怎么办?解决方法

热门文章

  1. 免费商城源码PHP类英文商城系统cms相对好的有哪些
  2. matlab Hu距 (计算 一阶距 中心距 7个不变几何距)
  3. html+CSS样式:雪花飘落背景(雪花为图片)
  4. 看一眼,你就会爱上它
  5. Marr的视觉计算理论
  6. 怎样访问远程服务器文件夹,访问远程服务器文件夹
  7. 电脑开机后屏幕无响应,主机发出嘀嘀嘀的声音
  8. QT QTimer定时器显示系统时间倒计时功能
  9. 走进小程序【五】微信小程序架构之【逻辑层】详解
  10. MySQL面试题---酒店信息表