2023 ICPC Xian

news/2025/10/16 0:11:42/文章来源:https://www.cnblogs.com/Young-Cloud/p/19144556

2023 ICPC Xian

ICPC Xian

也是非常坐牢的一场

E

从能力值小的人开始考虑,遍历他能胜利多少次,若他能胜利 \(x\) 次,则必须在交换操作后有一个长度为 \(2^x\) 的区间里面都是比他弱的,从小到大遍历胜利次数,同时维护区间:当下标是奇数时,区间向右拓展一倍,否则向左拓展一倍,比完一轮后,对下标除二向上取整。

I

若答案等于 \(g\),则选择的三个数一定是 \(g\) 的倍数,并且在前两个数一定是相邻的 \(g\) 的倍数,即对于确定的 \(j\),我们去找最大的 \(i\) 使得 \(i < j\) 并且 \(g | a_i\),于是我们可以确定第三个数的的下标 \(k\) 在大于等于 \(2j - i\) 的地方,于是我们选择最小的 \(k\) 使得 \(2j - i \leq k\)\(g | a_k\),这样选出来的三个数,并不能包含所有的答案为 \(g\) 三元组,但是这样一定是最优的三元组,因为对于固定的中心 \(j\) 和答案 \(g\),可能有若干符合条件的 \(i\)\(k\),但是我们选出来的 \(i\)\(k\) 的距离是最小的,能被尽可能多的区间包含。

接下来就是求出这样的三元组:

我们从左到右枚举中间一个数,然后枚举它的因数作为答案 \(g\),找上一个 \(g\) 的倍数作为第一个数,对于第 3 个数,我们现在只知道他最近在哪里,于是我们在那个最近的位置先留下前两个数的信息(第一个数的位置和答案 \(g\)):

    for (int i = 1; i <= n; ++i) {std::cin >> a[i];mx = std::max(a[i], mx);// 枚举因数for (auto &f : fac[a[i]]) {if (lst[f] !=0) {// 记录信息info[std::min(2 * i - lst[f], n + 1)].push_back({ lst[f], f });}lst[f] = i;}}

再从右往左扫一遍可以根据每个位置留下的信息来确定三元组:

    for (int i = 1; i <= mx; ++i) {lst[i] = 0;}for (int i = n; i >= 1; --i) {for (auto &f : fac[a[i]]) {lst[f] = i;}for (auto &[l, g] : info[i]) {if (lst[g] != 0) {// 确定三元组// lst[g] 是第三个数的下标// 记录了第一个数的下标和答案upd[lst[g]].push_back({ l, g });}}}

有了所有的三元组之后,离线处理询问,将询问按右端点排序。遍历到一个右端点时,通过 upd 中的信息更新,然后进行区间查询最大值。此处用的分块来实现:

// 分块
int sz, block[N + 5], val[N + 5], tag[N + 5];
void set(int pos, int v) {if (val[pos] < v) {val[pos] = v;tag[block[pos]] = std::max(tag[block[pos]], v);}
}
int ask(int l, int r) {int bl = block[l];int br = block[r];int ret = 0;if (bl == br) {for (int i = l; i <= r; ++i) {ret = std::max(ret, val[i]);}}else {for (int i = l; i <= sz * bl; ++i) {ret = std::max(ret, val[i]);}for (int i = bl + 1; i < br; ++i) {ret = std::max(ret, tag[i]);}for (int i = sz * (br - 1) + 1; i <= r; ++i) {ret = std::max(ret, val[i]);}}return ret;
}void solve() {// .......for (int i = 1; i <= q; ++i) {int l = 0, r = 0;std::cin >> l >> r;qr[r].push_back({ l, i });}sz = std::sqrt(n);for (int i = 1; i <= n; ++i) {block[i] = (i - 1) / sz + 1;}for (int r = 1; r <= n; ++r) {for (auto &[l, g] : upd[r]) {set(l, g);}for (auto &[l, idx] : qr[r]) {ans[idx] = ask(l, r);}}// ...... 
}

L

传说中的凹包吗,有意思。

就是问在那些角度里,存在一个侧面的投影包含所有侧面的投影,画个图手玩一下就好了。

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

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

相关文章

2025-10-15 ?

?Kasino game you have 1 coin,determine to join the following game or not. if you have n coins( n is a real number) before this round,you will have 9n w.p. 1/2,and have 0.1n w.p. 1/2 you will play infi…

为什么一部电影,一本书一看就喜欢

为什么一部电影,一本书一看就喜欢,我知道这跟这部作品的,要表达的思想有关,可为什么。。。因为这部电影你还没看完,内容你还不知道,你是怎么喜欢上的呢。真的很奇怪。。。也许,这是很肤浅的认识吧。就现在以前的…

20251015打卡

冒一下泡,我还活着哈哈哈

牛客119232 牛客2025秋季算法编程训练联赛1-提升组 游记

打了大约 $90min$ 离场,$4t$,整体题目较水。省流 打了大约 \(90min\) 离场,\(4t\),整体题目较水。10.15 内含剧透,请vp后再来。 不是题解!!!!!!! 赛前 晚上没吃饭,为了吃饭知道不会打的时间特别长。看到题…

BroadcastChannel跨页签通信复盘总结

BroadcastChannel API 提供了一个简单有效的跨页签通信解决方案,特别适合需要实时同步状态的同源页面场景。虽然存在一些局限性,但在合适的业务场景下,它能够以最小的开发成本实现良好的通信效果。 核心实现代码 //…

02020510 EF Core高级10-构建动态表达式树、不推荐动态构建表达式树、动态构建IQuerable、动态构建字符串

02020510 EF Core高级10-构建动态表达式树、不推荐动态构建表达式树、动态构建IQuerable、动态构建字符串 1. 不用Emit生成IL代码实现select的动态化(视频3-46) 1、Select(b=>new{b.Id,b.Name}) 2、运行时动态设定…

02020601 Web API01-顶级语句、全局using指令、可空类型、record类型(自动重写ToString、Equals)、init和private属性

02020601 Web API01-顶级语句、全局using指令、可空类型、record类型(自动重写ToString、Equals)、init和private属性 1.1 C#新语法01(视频4-1) 1.1 C#新语法 1、C#8.0、C#9.0和C#10.0中增加了很多的新语法,这里讲…

Nginx 之Rewrite 使用详解

Nginx 的 rewrite 模块是处理 HTTP 请求过程中的一个重要功能,它允许基于 Perl 兼容正则表达式(PCRE)对用户请求的 URI 进行重写,并返回 30x 重定向跳转或按条件执行相关配置。 Rewrite 指令 2.1 指令语法 Nginx 中…

libaom 在ubuntu 上用鸿蒙OHOS编译

1) 导入 OHOS 环境(当前会话)export OHOS_SDK=/root/harmony/command-line-tools/sdk/default/openharmony export OHOS_SYSROOT=$OHOS_SDK/native/sysroot export PATH=$OHOS_SDK/native/llvm/bin:$PATH# 确认编译器…

Aexlet-VGG2

使用CUDA 10轮结果显示还是Alex胜出

《膜拜!适合新手入门的卷积神经网络原理详解教程》读书报告

视频从卷积操作的基本概念入手,逐步深入到步长、边缘填充、特征图尺寸计算、参数共享、池化层作用以及整体网络架构等关键知识点,通过可视化的矩阵运算示例,让抽象的算法原理变得通俗易懂。(一)卷积操作:特征提取…

[asm/c]:SYSCALL系统调用的编号(x86_64)

[asm/c]:SYSCALL系统调用的编号(x86_64)[asm/c]:SYSCALL系统调用的编号(x86_64)一、基本说明1.  操作系统信息(ubuntu25.10):  Linux ubuntu 6.17.0-5-generic2.  系统调用编号文件的位置:  /usr/in…

公众号排版用什么好?一次技术视角的系统拆解:效率、兼容与智能协同

一、问题的起点:为什么“排版”成了内容生产的瓶颈? 在自媒体体系中,内容产出流程大致分为三步: 1️⃣ 内容构思与生成; 2️⃣ 视觉包装与排版; 3️⃣ 平台发布与分发。 在这三步中,排版环节的时间成本常常被低…

Linux系统下对拍

可以直接用C++的system函数执行对拍脚本 把造数据的mk.out文件和两个版本的代码文件放在一个文件夹下 void duipai() {//Linux系统下可执行文件后缀为.outwhile (true) {system("mk.out > data.in");syst…

json请求字符串格式化或使用转义字符

json请求字符串格式化或使用转义字符json请求字符串格式化或使用转义字符 测试接口: 通过String字符串类型来接收json字符串 @PostMapping("/wz/wzMqHandle") public void wzMqHandle(@RequestBody S…

Rokid Glasses语音交互特性分析和复刻“乐奇” 唤醒词的方案简述

前言 Rokid Glasses 作为头戴式智能设备的代表,其语音交互系统以 “自然、轻量、抗扰” 为核心设计理念,构建了适配头戴场景的完整交互方案,而 “乐奇” 唤醒词作为交互入口,是这一方案的关键载体。本文将先系统分…

C++_设计模式

单例模式确保一个类只有一个实例,并提供一个全局访问点饿汉模式 饿汉模式是在程序启动时就创建实例,因此不存在线程安全问题,但可能会造成资源浪费,特别是当单例对象的初始化代价较高或程序中没有频繁使用该对象…