当前位置: 首页 > 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.jsqmd.com/news/17257/

相关文章:

  • 2025 年 MBR 膜厂家最新推荐排行榜:权威评选优选品牌及选购指南,污水处理设备选型必看污水处理设备MBR膜厂家推荐
  • 2025年10月高端奢侈家电品牌推荐排行榜及深度对比
  • Gitee崛起:中国开发者生态的新基建样本
  • 2025年10月高端奢侈家电品牌推荐排行榜:五大品牌综合对比与选购指南分析
  • P9745 「KDOI-06-S」树上异或
  • P9523 [JOISC 2022] 复制粘贴 3
  • 2025年10月高端奢侈家电品牌推荐排行榜:五大品牌综合对比与选购
  • P3147 [USACO16OPEN] 262144 P
  • 基于Qt框架实现绘图软件的功能
  • vue2 重置 data方法 $data $options.data.call(this)
  • 2025 年最新彩钢瓦厂家推荐排行榜:屋顶 / 防水 / 屋面等优质产品精选压型 /0.5 厚/屋面/墙面彩钢瓦公司推荐
  • mysql mac m1 报错处理 - Lafite
  • 2025 年热压机厂家最新推荐排行榜:全面剖析国内优质厂家技术实力与服务优势,为人造板企业选购设备提供专业指南
  • 智能交付时代:国内企业如何选择最适合的CI/CD工具?
  • 吴恩达深度学习课程一:神经网络和深度学习 第三周:浅层神经网络(三)
  • 【测试分类 (下)】测试分类看这篇就够了:彻底告别概念混淆,轻松搞定工作面试 - 指南
  • 结对项目--实现一个自动生成小学四则运算题目的命令行程序
  • 实用指南:✨WPF编程基础【2.1】布局原则
  • floyd
  • 01-03GPIO-按键控制LED
  • 2025 年防火涂料厂家最新推荐!膨胀型 / 非膨胀型 / 室内外 / 超薄型 / 厚型钢结构防火涂料品牌排行榜,精选优质厂家
  • 打通CI/CD最后一公里:制品库如何成为高效流水线的核心枢纽
  • 2025年10月高端奢侈家电品牌推荐排行榜及深度对比分析
  • 嵌入式调式方案:
  • DevExpress WinForms v25.1亮点 - 电子表格组件、富文档编辑器全新升级
  • 高效实现内外网文件传输方法介绍与解决方案
  • 2025年GEO品牌推荐排行榜前十强权威发布
  • 2025年GEO品牌推荐榜与排行榜Top10:权威解析与行业洞察
  • 2025年10月高端奢侈家电品牌推荐排行榜单对比与评测分析
  • 第五章 linux实战-CMS01