ABC388G Simultaneous Kagamimochi 2

news/2025/1/22 16:41:40/文章来源:https://www.cnblogs.com/wh2011/p/18686211

问题描述

\(N\) 个元团子(米团),按照大小升序排列。第 \(i\) 个元团子 \((1≤i≤N)\) 的大小是 \(A_i\)

给定两个元团子 \(A\)\(B\),它们的大小分别是 \(a\)\(b\) ,你只有在 \(a\) 不超过 \(b\) 的一半时,才能通过将元团子 \(A\) 放在元团子\(B\)之上来制作一个元团子(kagamimochi)。

你被给予Q对整数。设 \((L_i, R_i)\) 是第 \(i\)\((1≤i≤Q)\),对于每个 \(i\),解决以下问题:

仅使用从第 \(L_i\) 个到第 \(R_i\) 个的 \(R_i-L_i+1\) 个元团子,你能同时制作多少个元团子?

更具体地说,找出最大非负整数 \(K\),使得:

  • 在从第\(L_i\)个到第\(R_i\)个的\(R_i - L_i + 1\)个元团子中,选择 \(2K\) 个元团子并形成 \(K\) 对。对于每对元团子,将一个放在另一个之上,以制造 \(K\) 个元团子(kagamimochi)。

题解

设答案为 \(k\),那么可以知道,在区间中最小 \(k\) 个和最大 \(k\) 个可以相互组合起来。设区间区间开头为 \(l\),末尾为 \(r\),那么可以这么组合 \((l, r - k + 1),(l + 1, r - k + 2),...,(l+i - 1,r-k+i)\)

我们尝试在 \([0,\frac{r - l + 1}{2}]\) 二分答案,二分 \(k\),设 \(N_i\)\(i\) 可以在 \([N_i, n]\) 里面的数组合。

\(i\in[l, l + k - 1]\),我们要求 \(i\)\(r - l + 1 - k + i\),那么可以得出 \(N_i\le r - l + 1 - k + i\) 移项得 \(N_i - i\le r - l + 1 - k\),用 ST 维护一下就行了。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using std::cin, std::cout;#define lF(i, a, b) for (int i = a, END##i = b; i <= END##i; i++)
#define rF(i, a, b) for (int i = a, END##i = b; i >= END##i; i--)void Init();
void Solve();signed main() {cin.sync_with_stdio(0);cin.tie(0), cout.tie(0);int T = 1;
//	cin >> T;while (T--) {Init();Solve();}return 0;
}using LL = long long;
using ULL = unsigned long long;const int Mod = 1e9 + 7;
const int Inf = 0x3f3f3f3f;
const LL InfLL = 0x3f3f3f3f3f3f3f3f;const int N = 2e5 + 10, M = 30;
int n, a[N], Log[N], Ne[N], f[N][M];
int l, r;void init_ST() {lF(i, 2, n) Log[i] = Log[i >> 1] + 1;lF(i, 1, n) f[i][0] = Ne[i] - i;for (int j = 1; (1 << j) <= n; j++)lF(i, 1, n - (1 << j) + 1)f[i][j] = std::max(f[i][j - 1], f[i + (1 << j - 1)][j - 1]);
}
int ask(int L, int R) {int k = Log[R - L + 1];return std::max(f[L][k], f[R - (1 << k) + 1][k]);
}bool check(int Mid) {int x = ask(l, l + Mid - 1);return l + Mid - 1 + x <= r;
}void Init() {
}void Solve() {cin >> n;lF(i, 1, n) cin >> a[i];lF(i, 1, n) Ne[i] = std::lower_bound(a + 1, a + n + 1, 2 * a[i]) - a;init_ST();int Q; cin >> Q;while (Q--) {cin >> l >> r;int L = 0, R = r - l + 1 >> 1;while (L < R) {int Mid = L + R + 1 >> 1;if (check(Mid)) L = Mid;else R = Mid - 1;}cout << L << "\n";}
}

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

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

相关文章

折腾笔记[10]-使用rust进行ORB角点检测

打包ORB算法到bye_orb_rs库,使用rust进行ORB角点检测. Package the ORB algorithm into the bye_orb_rs library, and use Rust for ORB corner detection.摘要 打包ORB算法到bye_orb_rs库,使用rust进行ORB角点检测. Package the ORB algorithm into the bye_orb_rs library, a…

DBSyncer开源数据同步中间件

一、简介 DBSyncer(英[dbsɪŋkɜː(r)],美[dbsɪŋkɜː(r) 简称dbs)是一款开源的数据同步中间件,提供MySQL、Oracle、SqlServer、PostgreSQL、Elasticsearch(ES)、Kafka、File、SQL等同步场景。支持上传插件自定义同步转换业务,提供监控全量和增量数据统计图、应用性能预…

幻想 实在 自我

小 C 和 小 Y 的故事还未停止 …… 或许不会停止弥晨时间仓促,如有错误欢迎指出,欢迎在评论区讨论,如对您有帮助还请点个推荐、关注支持一下

AT+CSQ 和 AT+QENG查询的 RSSI不一致

1. 查询结果如下:2. CSQ查询的RSSI 接收信号强度指示时是31,对应但是 AT+QENG查询的是-128

记录printf的一个小问题

因为打算使用sprintf来格式化字符串,然后显示,遇到了一个符号类型的问题 printf("%d",now_adc);这一句,如果now_adc是uchar类型,输出字符会显示异常,后来了解到,如果要直接打印uchar只能用%x或者%s 所以如果不想改变量大小可以在前面加括号强转如printf("…

工业人工智能白皮书2025年:边缘AI驱动,助力新质生产力报告汇总PDF洞察(附原数据表)

原文链接:https://tecdat.cn/?p=38940 在当前科技变革的浪潮中,工业领域正经历着深刻转型。人工智能与工业互联网等前沿技术的迅猛发展,为工业的升级演进带来了前所未有的机遇与挑战。 本报告汇总洞察聚焦工业领域的变革趋势,深入剖析其核心驱动力与发展脉络。通过对工业 …

【视频】R语言支持向量分类器SVM原理及房价数据预测应用及回归、LASSO、决策树、随机森林、GBM、神经网络对比可视化

全文链接: https://tecdat.cn/?p=38830 原文出处:拓端数据部落公众号 分析师:Yuqi Liu 在大数据时代,精准的数据分类与预测对各领域的发展至关重要。超平面作为高维空间中的关键概念,可将线性空间一分为二,为数据分类奠定了理论基石。基于此发展而来的最大边缘分类器,…

【信息化】一个IT主管/经理/总监的该做什么?-读图解 CIO 工作指南上半IT管理总结

在这个IT人日益技术焦虑的年代,为了缓解一下学习的焦虑,看各路推荐开始学习一下《图解CIO工作指南》。我的初衷很简单,学习一下IT架构设计的思路,日常IT管理工作怎么优化,以及未来MBA毕业写IT规划论文。 一开始,当我拿到这本看似“老旧”的书籍时,心里确实犯了点嘀咕…

LCD-RGB屏幕学习(二)ESP32驱动RGB屏幕

ESP32是国内比较火的IOT芯片厂商,在个人玩家圈子里备受好评1.器件准备40pin RGB 通用接口屏幕这里的通用接口指的是市面上最常见的接口,并不属于某种标准 我拆开了吃灰已久的树莓派便携HDMI屏幕,在屏库上查看此型号,刚好满足需求,又剩下一笔大洋ESP32N16R8选用带有pasram的…

OM6621F低功耗低成本蓝牙芯片支持BLE5.1和2.4G私有协议集成了电源管理单元(PMU)BMS电池管理领域首选方案

OM6621Fx是一款专为蓝牙低功耗和专有2.4GHz应用设计的功率优化的真系统级芯片(SOC)解决方案。它集成了高性能和低功率的射频收发器,具有蓝牙基带和丰富的外围I0扩展。OM6621Fx还集成了电源管理单元(PMU),以实现高效率的电源管理。它针对2.4GHz蓝牙低功耗系统、专有2.4GHz系统…

Jetpack架构组件学习(6)——使用Glance实现桌面小组件

原文地址: Jetpack架构组件学习(6)——使用Glance实现桌面小组件-Stars-One的杂货小窝公司陆续整了几个Compose写的app,有个小组件的功能,顺便试了下Jetpack库里的Glance框架 感觉与原来的Remoteview差点意思,不过点击事件的使用比Remoteview要方便不少PS: 如果想看Remoteview实…

《操作系统真象还原》第九章 线程(二) 多线程轮转调度

本文是对《操作系统真象还原》第九章(二)学习的笔记,欢迎大家一起交流第九章 线程(二) 多线程轮转调度 本文是对《操作系统真象还原》第九章(二)学习的笔记,欢迎大家一起交流,目前所有代码已托管至 fdx-xdf/MyTinyOS 。 上一节中成功创建了线程并运行,这一节要实现的…