当前位置: 首页 > news >正文

P7514 [省选联考 2021 A/B 卷] 卡牌游戏 分析

题目概述

Alice 有 \(n\) 张卡牌,第 \(i\)\(1 \le i \le n\))张卡牌的正面有数字 \(a_i\),背面有数字 \(b_i\),初始时所有卡牌正面朝上。

现在 Alice 可以将不超过 \(m\) 张卡牌翻面,即由正面朝上改为背面朝上。Alice 的目标是让最终朝上的 \(n\) 个数字的极差(最大值与最小值的差)尽量小。请你帮 Alice 算一算极差的最小值是多少。、

分析

经典的做法,套路的做法:二分极值然后进行check,不难发现我们直接枚举最小值,最大值也就知道了,然后他可以框住一个区间,这个区间随着最小值增大是往右动的,然后记录前后缀最大最小值就行了。

代码

时间复杂度 \(\mathcal{O}(n\log V)\),一开始写了一个 set 的,直接T飞了。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <stdlib.h>
#include <algorithm>
#include <vector>
#include <set>
#define int long long
#define N 1000006
using namespace std;
int n,m;
struct node{int a,b;
}da[N];
vector<int> ls;
int Lmin[N],Lmax[N],Rmin[N],Rmax[N];
bool check(int k) {int j = 1,nxt = 1;for (int i = 0;i < ls.size();i ++) {int mn = ls[i];int mx = mn + k;bool flag = 0;while(nxt <= n && da[nxt].a <= mx) nxt ++;while(j <= n && da[j].a < mn) {if (da[j].b < mn) return false;j ++;}if (Lmin[j - 1] < mn) return false;if (Lmax[j - 1] > mx || Rmin[nxt] < mn || Rmax[nxt] > mx) continue;if (n - nxt + j <= m) return true;}return false;
}
signed main(){cin >> n >> m;for (int i = 1;i <= n;i ++) scanf("%lld",&da[i].a),ls.push_back(da[i].a);for (int i = 1;i <= n;i ++) scanf("%lld",&da[i].b),ls.push_back(da[i].b);stable_sort(ls.begin(),ls.end());ls.erase(unique(ls.begin(),ls.end()),ls.end());stable_sort(da + 1,da + 1 + n,[](node x,node y) {return x.a < y.a;});Lmin[0] = 1e18;for (int i = 1;i <= n;i ++) Lmin[i] = min(Lmin[i - 1],da[i].b),Lmax[i] = max(Lmax[i - 1],da[i].b);Rmin[n + 1] = 1e18;for (int i = n;i;i --) Rmin[i] = min(Rmin[i + 1],da[i].b),Rmax[i] = max(Rmax[i + 1],da[i].b);int l = 0,r = ls.back() - *ls.begin(),res = r;while(l <= r) {int mid = l + r >> 1;if (check(mid)) r = mid - 1,res = mid;else l = mid + 1;}cout << res;return 0;
}
http://www.zskr.cn/news/25036.html

相关文章:

  • 2025 年 MBR 膜厂家最新推荐排行榜:权威评选优选品牌及选购指南,污水处理设备选型必看污水处理设备MBR膜厂家推荐
  • P9523 [JOISC 2022] 复制粘贴 3
  • P3147 [USACO16OPEN] 262144 P
  • vue2 重置 data方法 $data $options.data.call(this)
  • mysql mac m1 报错处理 - Lafite
  • 【测试分类 (下)】测试分类看这篇就够了:彻底告别概念混淆,轻松搞定工作面试 - 指南
  • 结对项目--实现一个自动生成小学四则运算题目的命令行程序
  • 如何管控文件外发安全,确保企业数据不被泄露
  • 打通CI/CD最后一公里:制品库如何成为高效流水线的核心枢纽
  • 2025年10月高端奢侈家电品牌推荐排行榜及深度对比分析
  • 2025年10月高端奢侈家电品牌推荐排行榜单对比与评测分析
  • 第五章 linux实战-CMS01
  • [nvidia docker]
  • vite插件——vite-plugin-inspect
  • ceph管理后台dashboard部署
  • 内外网文件摆渡系统有哪些?一文读懂主流方案与选型方向
  • mysql 更新默认时间
  • autohotkey 控制输入法
  • C语言实现LDPC码译码功能
  • [NOIP 2012 提高组] 开车旅行 的AC代码
  • 2025 年报警器经销商最新推荐榜单:全面剖析海湾、青鸟等品牌服务商优势,为您筛选优质可靠合作伙伴燃气 / 太阳能 / 交通道路报警器推荐
  • 解决IDEA引入依赖报错
  • 2025年10月超声波清洗机厂家推荐:十强对比评测榜
  • 完整教程:【Hive】基于物品协同过滤 [ ItemCF ] 推荐课程-余弦相似度计算
  • 2025年10月超声波清洗机厂家推荐:十强对比评测榜助您高效选型
  • CTFHub 信息泄露通关笔记9:Git泄露 Index - 指南
  • 2025年10月抗老面霜推荐:小鸟传领衔五强对比评测榜
  • 基于STM32芯片通过CAN总线控制电机运动
  • 基于Java+Springboot+Vue开发的母婴商城管理系统源码+运行步骤
  • 2025智能客服管理系统哪个好?对比国产主流5款工具中怎么选? - RAIN