Match Points【Codeforces 1156C】【二分答案】

2023-11-20

题目链接


  题意有点像上海EC某年的一道铜牌题。具体是哪年记不得了,我们要去N个的关系,使得最多的匹配对达到他们的差值"≥Z"这样的情况。

  有这样的一组数据可以很好的反映这道题为什么有人会WA了:

4 3
1 4 5 7

  但是,同时也证明了,我们取前K小,然后跟后K大去比较,这样子二分答案的方式也是可以的。


#include <iostream>
#include <cstdio>
#include <cmath>
#include <string>
#include <cstring>
#include <algorithm>
#include <limits>
#include <vector>
#include <stack>
#include <queue>
#include <set>
#include <map>
#define lowbit(x) ( x&(-x) )
#define pi 3.141592653589793
#define e 2.718281828459045
#define INF 0x3f3f3f3f
#define HalF (l + r)>>1
#define lsn rt<<1
#define rsn rt<<1|1
#define Lson lsn, l, mid
#define Rson rsn, mid+1, r
#define QL Lson, ql, qr
#define QR Rson, ql, qr
#define myself rt, l, r
namespace fastIO {
#define BUF_SIZE 100000
    //fread -> read
    bool IOerror = 0;
    inline char nc() {
        static char buf[BUF_SIZE], *p1 = buf + BUF_SIZE, *pend = buf + BUF_SIZE;
        if(p1 == pend) {
            p1 = buf;
            pend = buf + fread(buf, 1, BUF_SIZE, stdin);
            if(pend == p1) {
                IOerror = 1;
                return -1;
            }
        }
        return *p1++;
    }
    inline bool blank(char ch) {
        return ch == ' ' || ch == '\n' || ch == '\r' || ch == '\t';
    }
    inline void read(int &x) {
        char ch;
        while(blank(ch = nc()));
        if(IOerror) return;
        for(x = ch - '0'; (ch = nc()) >= '0' && ch <= '9'; x = x * 10 + ch - '0');
    }
#undef BUF_SIZE
};
using namespace fastIO;
using namespace std;
typedef unsigned long long ull;
typedef long long ll;
const int maxN = 2e5 + 7;
int N, Z, a[maxN];
bool solve(int nn)
{
    for(int i=1; i<=nn; i++) if(a[N - nn + i] - a[i] < Z) return false;
    return true;
}
int main()
{
    scanf("%d%d", &N, &Z);
    for(int i=1; i<=N; i++) scanf("%d", &a[i]);
    sort(a + 1, a + 1 + N);
    int L = 0, R = N>>1, mid = 0, ans = 0;
    while(L <= R)
    {
        mid = (L + R) >> 1;
        if(solve(mid))
        {
            L = mid + 1;
            ans = mid;
        }
        else R = mid - 1;
    }
    printf("%d\n", ans);
    return 0;
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Match Points【Codeforces 1156C】【二分答案】 的相关文章

  • codeforces1169C 二分答案+思维

    1169C 1700的题 xff0c 然而比赛的时候没有做出来 题意 xff1a 给你一个n表示序列长度为n xff0c 还有一个m表示这个序列的最大值小于m 然后对这个数组进行多次操作 xff0c 一次操作为 对ai xff0c aj x
  • [二分答案] 洛谷P1873 砍树

    目录 题意样例样例输入 xff1a 样例输出 思路总结代码 题意 伐木工人米尔科需要砍倒M米长的木材 这是一个对米尔科来说很容易的工作 xff0c 因为他有一个漂亮的新伐木机 xff0c 可以像野火一样砍倒森林 不过 xff0c 米尔科只被
  • Codeforces Round #291 (Div. 2)

    题目链接contest 514 A Chewba ca and Number 不允许有前导零 所以如果第一位是9的话 需要特别考虑 一开始理解错了题意 又WA了呜呜呜 include
  • Codeforces Round 744 (Div. 3)

    A Casimir s String Solitaire 一个A需要一个B一个C需要一个B 所以只要A和C的个数之和等于B即可 AC代码 include
  • 【NOIP 2004 提高组】合并果子

    题就自己找啦 各大OJ上应该都有 题目 题目描述 在一个果园里 多多已经将所有的果子打了下来 而且按果子的不同种类分成了不同的堆 多多决定把所有的果子合成一堆 每一次合并 多多可以把两堆果子合并到一起 消耗的体力等于两堆果子的重量之和 可以
  • hdoj 1052 Tian Ji -- The Horse Racing 贪心算法

    这道题就是解决选择策略问题 思路一 先将田忌跟齐王的马的速度数组进行一次冒泡排序 1 如果田忌最慢的马比齐王最慢的马快 则比慢马 2 如果田忌最慢的马比齐王最慢的马慢 则用田最慢的马跟齐最快的马比 消耗齐的快马这是贪心的第一步 3 如果田忌
  • [NOI2010]超级钢琴【RMQ+贪心+堆】

    题目链接 超级棒的一道题 解这道题 需要分一下几步来看 取的是连续段 我们可以对每个可能起点去知道它的最大可能解 起点begin 最大可行解一定是begin L 1 begin R 1中的一个 如果每次都是取最大的话 那么下一个同起点的一定
  • 紫书《算法竞赛入门经典》

    紫书 算法竞赛入门经典 题目一览 第3章 数组和字符串 例题 UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 340 Master Mind Hints UVA 158
  • River Jumping【贪心+模拟】

    题目链接 我们可以贪心的从前往后 每次选最接近的且满足条件的这样的贪心 然后从后往前的时候 就是直接用倒着一个个判断是否合法即可 include
  • AcWing 104. 货仓选址

    题目 在一条数轴上有 N 家商店 它们的坐标分别为 A1 AN 现在需要在数轴上建立一家货仓 每天清晨 从货仓到每家商店都要运送一车商品 为了提高效率 求把货仓建在何处 可以使得货仓到每家商店的距离之和最小 输入格式 第一行输入整数N 第二
  • Bracket Coloring

    Bracket Coloring 题意 给出一个括号序列 定义漂亮序列为匹配括号序列或者反转之后是匹配括号序列的序列 现在要求染色 使得相同颜色的括号组成漂亮序列 问最少需要多少种颜色即每个括号染的颜色 思路 这里可以用栈来匹配括号序列 因
  • Voting【Codeforces 1251 E1 && E2】【贪心】

    Educational Codeforces Round 75 Rated for Div 2 E2 Now elections are held in Berland and you want to win them More preci
  • 多元Huffman编码问题

    题目链接 题意 最多可以让k堆合并 每一次合并的花费为河合并堆的数量 问最多和最少的花费 题解 最少的花费一定是每次合并的堆数尽可能多 这样我们就会减少前面已经合并的堆的重复计算 所以 每次合并k堆时最少 每次合并2堆时最大 另外 最少的时
  • 2605. 从两个数字数组里生成最小数字

    文章目录 Tag 题目来源 题目解读 解题思路 方法一 枚举比较法 方法二 集合的位运算表示法 写在最后 Tag 贪心 位运算 数组 题目来源 2605 从两个数字数组里生成最小数字 题目解读 给定两个各自只包含数字 1 到 9 的两个数组
  • LeetCode-1827. 最少操作使数组递增【贪心,数组】

    LeetCode 1827 最少操作使数组递增 贪心 数组 题目描述 解题思路一 简单暴力 解题思路二 优化1 ans是操作数 mx是当前最大元素 mx无论如何会依次递增 解题思路三 优化2 遇到小的数就pre 1 否则变为num 题目描述
  • HDU--1050:Moving Tables (贪心)

    1 题目源地址 http acm hdu edu cn showproblem php pid 1050 2 解题思路 将每个输入的起始房间和结束房间转换为房间前面的区间 按区间起始位置从小到大排序 首先取第一个区间 后续如果有区间的起始位
  • ACM--田忌赛马--贪心--HDOJ 1052--Tian Ji -- The Horse Racing

    HDOJ题目地址 传送门 Tian Ji The Horse Racing Time Limit 2000 1000 MS Java Others Memory Limit 65536 32768 K Java Others Total S
  • AcWing 1247. 后缀表达式

    老师的讲课网址 https www acwing com video 736 第二个图就已经告诉我们只要有一个减号 我们就可以组成至少含一个减号的所有组合 比如说一个减号三个加号我们可以组合成 1 2 3 4 所以代码如下 include
  • 编程之美2015初赛第二场AB

    题目1 扑克牌 时间限制 2000ms 单点时限 1000ms 内存限制 256MB 描述 一副不含王的扑克牌由52张牌组成 由红桃 黑桃 梅花 方块4组牌组成 每组13张不同的面值 现在给定52张牌中的若干张 请计算将它们排成一列 相邻的
  • 二分答案总结&例题解析

    对于二分我们最初的了解 就是在一个一次函数中 对于要求的点 x y 已知y 对于包含x值的区间二分 根据函数值与y比较 逐步靠近要求的点 直到最终求出要求的点 在程序执行时 二分的时间复杂度为logn 可以极大的减少查找的时间 二分的应用

随机推荐

  • interview

    收割机博客 https blog csdn net DERRANTCM article details 73456550 查找算法 https blog csdn net derrantcm article details 51534498
  • sqlite升级

    最近开发中遇到了需要改变项目数据库的表中字段 添加新表等需求 而又需要保证原有数据不变 这就涉及到数据库升级 现在就来总结记录一下 包含原表中增加字段 删除字段 修改字段 添加新表等四种升级操作 SQLiteOpenHelper类中有两个方
  • 华为校招机试题-猜字谜-2023年

    题目描述 小王设计了一个简单的猜字谜游戏 游戏的谜面是一个错误的单词 比如nesw 玩家需要猜出谜底库中正确的单词 猜中的要求如下 对于某个谜面和谜底单词 满足下面任一条件都表示猜中 1 变换顺序以后一样的 比如通过变换w和e的顺序 nwe
  • App隐私监管新规实施 隐私合规检测要注意这几点?

    5月1日 国家四部委联合制定的 常见类型移动互联网应用程序必要个人信息范围规定 简称 规定 将正式实施 规定 明确移动互联网应用程序 App 运营者不得因用户不同意收集非必要个人信息 而拒绝用户使用App基本功能服务 要求各地各相关单位督促
  • Linux创建文件的5种方式

    Linux创建文件的5种方式 1 touch 1 1 创建一个文件 touch yyTest ini 1 2 同时创建两个文件 touch test1 txt test2 txt 1 3 批量创建文件 如创建2000个文件 touch te
  • 自定义modal转场动画,滑动手势控制 dismiss 过程

    效果 假设有 1 两个视图控制器 presentingVC presentedVC 2 一个继承于UIPercentDrivenInteractiveTransition 并遵守协议UIViewControllerAnimatedTrans
  • java上传Base64编码格式的图片

    工具类 public class ImageBase64Converter 本地文件 图片 excel等 转换成Base64字符串 param imgPath public static String convertFileToBase64
  • LWIP学习笔记(2)---IP协议

    IP首部 最高位在左边记为 bit 最低位在右边 记为31 bit 传输顺序 先0 7bit 在8 15bit 然后16 13 最后24 31bit 这种方式称为 big endian 也叫网络字节序 版本 ipv4 或 6 ipv6 首部
  • Scanner类: next() 与 nextLine()与nextInt()

    next nextLine nextInt 是scanner内置的方法 next 1 一定要读取到有效字符后才可以结束输入 2 对输入有效字符之前遇到的空白 next 方法会自动将其去掉 3 只有输入有效字符后才将其后面输入的空白作为分隔符
  • 从零开始入门 K8s

    作者 至天 阿里巴巴高级研发工程师 一 基本知识 存储快照产生背景 在使用存储时 为了提高数据操作的容错性 我们通常有需要对线上数据进行 snapshot 以及能快速 restore 的能力 另外 当需要对线上数据进行快速的复制以及迁移等动
  • 解决cmd命令行运行java程序,编译通过,执行时却找不到主类的问题

    命令行中使用javac命令编译Train通过 使用java命令运行却找不到主类Trian 原因 有package的存在 编译成功后 需要返回上一层文件目录使用java命令执行train Trian 即 java命令后跟 包名称调用主类名称
  • Ubuntu和Windows使用Mmdetection训练Swin-Transformer+Mask-RCNN

    最近想用各种SOTA的Swin Transformer来试试实例分割效果 于是找了一下教程实验了一下 主要分为以下步骤 1 安装Mmdetection 这部分的教程很多 网上搜一下就行了 但是这里出错最多 2 下载Swin Transfor
  • java 获取list中的两两组合,给定一个数组,获取排列组合

    如题 获取一个数组中两两组合 示例 给定一个List lt 1 2 3 4 gt 输出 1 2 1 3 1 4 2 3 2 4 3 4 demo public static void main String args List
  • 几率大的网络安全面试题(含答案)

    其他面试题类型汇总 Java校招极大几率出的面试题 含答案 汇总 几率大的网络安全面试题 含答案 几率大的多线程面试题 含答案 几率大的源码底层原理 杂食面试题 含答案 几率大的Redis面试题 含答案 几率大的linux命令面试题 含答案
  • 【Linux】 Linux使用timedatectl命令修改时间报错

    Linux中可以使用timedatectl命令来修改系统时间信息 具体命令中常见的参数格式及作用如下 参数 作用 status 显示状态信息 list timezones 列出已知时区 set time 设置系统时间 set timezon
  • STM32学习笔记——USB鼠标

    最近搞了好久的STM32模拟USB鼠标 功能就是简单的利用三个按键实现滚轮和鼠标左右键的功能 USB功能其实已经集成好一个库了 我们只是对其中几个函数进行配置而已 其实很多配置还不是太懂 整个USB程序的过程大概就是1 中断配置 2 USB
  • 【win10】 设置应用开机自启动

    步骤如下 1 按Win r键 输入 shell startup 2 确定后会出现一个文件夹 把要开机启动的应用快捷方式放到里面 3 在任务管理器的启动里面进行设置 可以在状态字段选择启用或者禁用 放在文件夹里只是让它可以在任务管理器的启动里
  • jdk与jre的区别

    jdk与jre的区别 很多程序员已经干了一段时间java了依然不明白jdk与jre的区别 JDK就是Java Development Kit 简单的说JDK是面向开发人员使用的SDK 它提供了Java的开发环境和运行环境 SDK是Softw
  • 解决Ubuntu 20.04 node-v 和nodejs --version显示不同版本

    Ubuntu 20 04 node v 和nodejs version显示不同版本 1 删除原来的node js版本以及之前的软链接 我这里是输入node v显示4 0 0pre 首先要删除 卸载这个版本对应的node js文件 此时如果在
  • Match Points【Codeforces 1156C】【二分答案】

    题目链接 题意有点像上海EC某年的一道铜牌题 具体是哪年记不得了 我们要去N个的关系 使得最多的匹配对达到他们的差值 Z 这样的情况 有这样的一组数据可以很好的反映这道题为什么有人会WA了 4 3 1 4 5 7 但是 同时也证明了 我们取