炼石#8 T1

news/2025/9/30 19:10:54/文章来源:https://www.cnblogs.com/SHuxinn/p/19121678

image
image

赛时很快想出切掉,感觉比t2恶心🤢,可能是二分做法的问题(bushi
想法简单,贪心想法保留m个最小的 ,于是二分k用来区分大数和小数 , 如果小于k/2为小数 , 显然小数是必拿 ,然后在每个小数之间最多只能有一个大数,且需要满足小数加这个大数小于k即可
然后如果最后长度小于m就找大,大于等于m就找小细节看注释

#include <bits/stdc++.h>  // 包含所有标准库头文件,方便快速编写代码
#define MAXN 500010       // 定义宝石数量的最大上限
#define inf 2000000000    // 定义二分查找的右边界(足够大的数)
#define int long long     // 将int类型重定义为long long,避免整数溢出
using namespace std;namespace SHuxinn {int n, m, a[MAXN];  // n:原项链的宝石总数;m:需要保留的宝石数;a[]:存储每块宝石的破碎值vector<int> s;      // 存储满足「a[i] ≤ 当前二分的k/2」的宝石位置(用于辅助判断相邻和)// 检查:当最大允许的相邻宝石破碎值之和为k时,能保留的宝石数量是否 ≥ mint check(int k) {s.clear();  // 每次检查前清空容器for (int i = 1; i <= n; i++) {// 筛选出「自身破碎值 ≤ k/2」的宝石(这类宝石更容易与其他宝石相加不超过k)if (a[i] <= k / 2) {s.push_back(i);}}if (s.empty()) {  // 若没有宝石满足「a[i] ≤ k/2」,则任意两块相加都>k,最多只能留1块return 0;}if (s.size() == 1) {  // 只有1块满足「a[i] ≤ k/2」的宝石,检查是否能找到另一块与之相加≤kint l = s[0];for (int i = 1; i <= n; i++) {if (i != l && a[i] + a[l] <= k) {  // 找到不同的宝石且和≤kreturn 2;  // 能保留2块}}return 1;  // 找不到,只能保留1块}int last = 0;   // 记录上一个「a[i] ≤ k/2」的宝石位置int ans = 0;    // 记录在「a[i] ≤ k/2」的宝石之间,额外能保留的宝石数量int r = s.size() - 1;  // 环形结构中,最后一个「a[i] ≤ k/2」的宝石在s中的索引for (auto l : s) {  // 遍历所有「a[i] ≤ k/2」的宝石位置if (last == 0) {  // 处理第一个「a[i] ≤ k/2」的宝石(环形的“开头”情况)// 取「当前宝石」和「最后一个满足条件的宝石」的较大值(因为是环形,首尾相邻)int maxx = max(a[l], a[s[r]]);bool vis = 1;  // 标记是否在“首尾之间”找到可保留的宝石// 检查「第一个满足条件的宝石」左边的宝石(环形的左半部分)for (int j = 1; j < l && vis; j++) {if (maxx + a[j] <= k) {  // 找到能与maxx相加≤k的宝石ans++;  // 保留这块宝石vis = 0;  // 标记已找到,退出循环}}// 检查「最后一个满足条件的宝石」右边的宝石(环形的右半部分)for (int j = s[r] + 1; j <= n && vis; j++) {if (maxx + a[j] <= k) {  // 找到能与maxx相加≤k的宝石ans++;  // 保留这块宝石vis = 0;  // 标记已找到,退出循环}}last = l;  // 更新上一个满足条件的宝石位置为当前lcontinue;}// 处理非第一个「a[i] ≤ k/2」的宝石(检查当前l与上一个last之间的宝石)int maxx = max(a[last], a[l]);  // 上一个和当前满足条件的宝石的较大值for (int i = last + 1; i < l; i++) {if (maxx + a[i] <= k) {  // 找到中间能保留的宝石ans++;  // 保留这块宝石break;  // 只要找到一个就停止(尽可能多保留,找到即满足)}}last = l;  // 更新上一个满足条件的宝石位置}// 总保留数 = 满足「a[i] ≤ k/2」的宝石数 + 中间额外保留的宝石数return s.size() + ans;}void Sx5() {int tid;cin >> tid >> n >> m;  // 输入:测试点编号、原宝石数n、需要保留的宝石数mint maxx = 0;for (int i = 1; i <= n; i++) {cin >> a[i];        // 输入每块宝石的破碎值maxx = max(maxx, a[i]);  // 记录最大的破碎值(二分初始参考)}// 二分查找:最小的「最大相邻和」int l = 0, r = inf, ans;  // l:左边界;r:右边界;ans:最终答案while (l <= r) {int mid = (l + r) / 2;  // 当前猜测的「最大相邻和」if (check(mid) >= m) {  // 若能保留至少m块宝石r = mid - 1;        // 尝试更小的「最大相邻和」ans = mid;          // 记录当前可行的答案} else {l = mid + 1;        // 否则需要更大的「最大相邻和」}}cout << ans << endl;  // 输出最小的「不美观度」(即最小的最大相邻和)}
}signed main() {freopen("necklace.in", "r", stdin);   // 重定向输入到文件necklace.infreopen("necklace.out", "w", stdout); // 重定向输出到文件necklace.outSHuxinn::Sx5();  // 调用命名空间内的核心逻辑函数return 0;
}

ps::注释是ai写的只粗略的看了一眼,有问题欢迎纠正

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/923176.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中国建设银行卖狗年纪念币官方网站百度推广seo软件

标题&#xff1a;深入解析JVM内部机制&#xff1a;探索Java虚拟机的工作原理 摘要&#xff1a;本文将深入解析Java虚拟机&#xff08;JVM&#xff09;的内部机制&#xff0c;探索其工作原理。我们将从JVM的架构、内存管理、垃圾回收、即时编译器等方面进行讨论&#xff0c;并通…

详细介绍:《C++ Primer Plus》读书笔记 第二章 开始学习C++

详细介绍:《C++ Primer Plus》读书笔记 第二章 开始学习C++pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Conso…

网站后台数据库下载企业网站服务类型

纯HTML外贸公司通用企业html网站模板源码 源码地址&#xff1a;https://download.csdn.net/download/Highning0007/89150720

【虚拟机】“:域名解析出现暂时性错误”VMware配置DNS

前言 最近家里路由器换了,虚拟机忘记重新配置,导致下午在apt的时候出现这个错误环境 软件:VMware Workstation 17 Pro 系统:Windows 10 网络:使用NAT模式作为虚拟机网络 步骤2. 选中虚拟机使用的虚拟网络,点击NA…

十堰网站建设电话wordpress 登录地址

1.Hazelcast介绍 Hazelcast是Hazelcast公司开源的一款分布式内存数据库产品&#xff0c;提供弹性可扩展、高性能的分布式内存计算。并通过提供诸如Map&#xff0c;Queue&#xff0c;ExecutorService&#xff0c;Lock和JCache等Java的许多开发人员友好的分布式实现。 Hazelcast优…

双抗 ADC:如何突破传统 ADC 瓶颈,成为癌症治疗的精准杀伤利器?

在癌症靶向治疗领域,单克隆抗体(单抗)药物曾凭借 “精准识别肿瘤靶点” 的优势改变治疗格局,但随着临床应用深入,其局限性逐渐凸显 —— 癌症发病机制复杂,多靶点协同驱动肿瘤进展、单一靶点靶向易引发耐药、肿瘤…

通州网站建设公司如何建立自己的公司

前言&#xff1a;博主第一次接触MongoDB&#xff0c;看了一圈网上现有的教程&#xff0c;不是缺少细节就是有问题没交代清楚&#xff0c;特整理了一下自己安装运行的过程&#xff0c;从下载安装到开机自启&#xff0c;全程细节齐全、图文并茂、简单易懂。 目录 1. 从官网下载2…

电子商务网站建设预算表seo是指什么岗位

使用 netstat 检查端口 netstat 是一个命令行工具&#xff0c;可以提供有关网络连接的信息。 netstat - atulnp会显示所有端口和所有对应的程序&#xff0c;用grep管道可以过滤出想要的字段 -a &#xff1a;all&#xff0c;表示列出所有的连接&#xff0c;服务监听&#xff…

网站备案域名需要解析到备案服务器吗设计软件的软件

第一、搭建python环境 安装python 第二、下载Gstreamer 下载Gstreamer 第三、编写 GStreamer 插件 编写 GStreamer 官方资料 其他 第四、Gstreamer中文文档 中文文档

【软件架构设计(40)】数据库规范化与性能优化 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

AI+手搓第一个AI Agent“AI胜铭兰”

​ 上次开发了一个MCP云部署平台。时隔将近4个月,第二个项目AI Agent“AI胜铭兰”终于开发完且上线了。 项目介绍: 第二个项目是建立在第一个项目的基础上的。所以功能可以做到定制化开发。每个MCP开发好只需要配置下…

开发一套网站价格淘宝网站如何推广

因为有个需求&#xff0c;需要处理文件夹内所有txt文件&#xff0c;将txt里面的数据筛选&#xff0c;重新存储。 虽然手工可以做&#xff0c;但想到了python一直主张的是自动化测试&#xff0c;就想试着写一个自动化处理数据的程序。 一.分析数据格式 需要处理的数据是txt格式存…

基于JDK17的GC调优策略

基于JDK17的GC调优策略 一、JVM 参数分类(三类核心参数) JVM 参数按稳定性分为三类,不同类别对应不同使用场景和查看方式,具体如下表:参数类别 标识符号 稳定性 查看命令 常用示例标准参数 - 开头 所有 HotSpot 均…

成都网站建设案例单招网网站推广人员怎么算业绩

Spring Spring Cache 注释驱动的 Spring cache 缓存介绍使用 Spring 2.5 注释驱动的 IoC 功能虚拟化 libvirt kvm 虚拟机上网 – Bridge桥接KVM详解&#xff0c;太详细太深入了&#xff0c;经典Tomcat Linux机器同时运行两个tomcat点评&#xff1a;主要是那张图片的配置 Nginx …

福安 网站设计wordpress卸载插件

因个人需要&#xff0c;mkfs.ext3 但是项目中还没有这个命令 所以琢磨了半天 这里将其小记一下 在buildrootfsz中&#xff0c;需要将e2fsprogs 勾选上然后重新编译就好了 make menuconfig Target packages-> Filesystem and flash utilities-> e2fsprogs

【MC】我的世界schematic方块坐标提取转为json

前言 主包最近在搞mc广州塔灯光效果的复刻计划(请看合集),由于主包没学过着色器编程,但是目前而言,最大的问题已经转化为只要控制每个方块的灯光颜色就够了。 所以想着用three.js做个轻量化的广州塔灯光模拟器,然…

Jenkins+IIS+Bonobo.Git.Server 搭建适用dotnet开发者的小团队的devops环境

前言: 1、在一个小团队里面,可能我们既是开发(前端+后端)也是运维还是售前售后服务。我们样样都得会,但说实话,样样都不是很精!但是我们也梦,梦想着一切能像大厂那样,开发是开发,运维是运维,各司其职。作为…

电脑开机显示屏表现无信号怎么办 原因及解决方法

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

JDK17新特性梳理

JDK17新特性梳理 一、为什么JDK17生态强制升级: 业界长期 “你发任你发,我用 Java8”,但 Spring Framework 6.0+ 明确要求 Java 17+,Spring Boot 3.2+ 不仅要求 Java 17+,还需依赖 Spring Framework 6.1.1+,且仅…

数据结构学习随笔 第一章

数据结构学习随笔 第一章该内容全部引用于 《数据结构 C 语言 第二版》 严蔚敏 李冬梅 吴伟民 著绪论 只有清楚数据的内在联系,合理地组织数据,才能对它们进行有效的处理,设计出高效的算法。 1.1 数据结构研究的内容…