Educational Codeforces Round 173

news/2024/12/25 1:18:16/文章来源:https://www.cnblogs.com/lingfunny/p/18629029

Educational Codeforces Round 173

C

记得是处理一下前缀最大值和最小值,后缀最大值和最小值,最后合并即可。这个有讲解,不多赘述。

D

考虑令 \(A = aG, B=bG\),我们有 \(\gcd(a, b) = 1\)

题目转化为求使得 \(\lvert a - b\rvert\) 最大的 \(a, b\in[L', R']\),满足 \(\gcd(a, b) = 1\)

这个我们不难发现,\(\gcd(p, n) = 1\) 当然 \(n = kp\) 除外。

所以如果我们从小到大枚举 \(a\),从大到小枚举 \(b\),大概率会找到 \(\gcd(a, b) = 1\) 的数对。

我们直接暴力枚举:

for (i64 i = l; i <= r && i - l < lim && i - l < res; ++i)for (i64 j = r; j >= i && r - j < lim && i - l + r - j < res; --j)if (gcd(i, j) == 1) {res = min(res, i - l + r - j);L = i, R = j;}

这个枚举的复杂度是很低的,我感觉是 \(\log^2\) 的枚举,还有一个 \(\log\) 的求 \(\gcd\),但是常数很小。

不妨假设枚举了 \(a = L'\),这时候 \(\gcd(L', b) = 1\) 显然应该很容易成立。

举个例子,我们要使 \(\gcd(n, b)\neq 1\)\(b=2,3,4,\cdots\) 都不成立,\(n=2\times3\times5\times7\times\cdots\),只有 \(\log n\) 项。但是反观 \(b\) 的增长代价是很小的,\(b\) 增长 \(1\)\(a\) 基本上就要乘上一个质数。

我只能说,感性证明,具体证明应该是可以的。

代码298220001

E

这个考虑直接拆位。给定两个 01 矩阵。
能够把某一行改为 \(0\),某一列改为 \(1\),求能否 A -> B
反着考虑?看一下 \(B\) 是否某行为 \(0\) 或者某列为 \(1\)
如果是,可以把这行/列从矩阵中删除,然后看剩下的矩阵是否对应。
时间复杂度 \(O(T S (n+m)\log V)\)

代码298246149

F

赛时的代码有很多 BUG,不过算法是对的。

首先题目就是求区间中删去若干个数,要求剩下的数异或和为 \(0\),求最多删几个和方案数。

约定:我们下面说的「答案」,指的是保留的数字数量。

首先,我们观察到,当区间长度 \(L\) 满足 \(L>51\) 的时候,根据鸽巢原理,显然存在 \(a_i\oplus a_j=0\),我们只需要考虑答案是 \(2\) 还是 \(1\)

\(1\) 就是有 \(0\)\(2\) 就是有两个数相同,这都很好处理(具体可见代码,存储每个数出现的位置,然后二分)。

另一方面,当 \(L \ge 12\) 的时候,根据鸽巢原理,\(\binom{12}{2} = 66>64\),也就是有 \(a_i\oplus a_j = s\)\(a_x\oplus a_y=s\),我们的答案不会超过 \(4\)

所以对于 \(12\le L\le 51\) 的情况,我们可以去枚举这样的 \(i, j, x, y\),对于 \((i, j)\) 这对,可以用桶,对于 \((x, y)\) 这对,我们直接枚举(钦定 \(i, j < x,y\))。可见代码:

Z ans3 = 0, ans2 = 0, ans4 = 0;
array<Z, 64> cnt, cnt2;
for (int i = l; i <= r; ++i) {for (int j = i + 1; j <= r; ++j) {ans3 += cnt[a[i] ^ a[j]];ans4 += cnt2[a[i] ^ a[j]];if ((a[i] ^ a[j]) == 0) ans2 += 1;}cnt[a[i]] += 1;for (int j = l; j < i; ++j)cnt2[a[i] ^ a[j]] += 1;
}

这里 ans2, 3, 4 就是选 \(2, 3, 4\) 个数异或和为 \(0\) 的方案数,然后用 cnt[x] 记录前 \(i\) 个数中为 \(x\) 的数的数量,cnt2[x] 记录前 \(i\) 个数中,选两个数的异或和为 \(x\) 的方案数。

时间复杂度 \(O(50^2)\)

对于 \(L<12\) 的情况,我们直接 \(2^{12}\) 枚举每个数选还是不选。

综上,时间复杂度 \(O(q(50\log n + 50^2 + 2^{12}))\)

代码298305541

G

没看。

就到这。

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

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

相关文章

Visual Studio - API调试与测试工具之HTTP文件

VisualStudio2022支持类似RESTClient功能,可通过.http文件便捷调试Api接口,包括创建方式、语法、注释变量、环境文件及身份验证等,功能待完善,测试代码已上传至代码库。后端开发,我们对于Api接口调试测试大致有以下方法:单元测试、Swagger、Postman。 但是每种方式也都有…

tasklet

数据结构初始化tasklet_scheduletasklet_action {{uploading-image-512152.png(uploading...)}}

pelt

为什么需要PELT? 之前CFS以每个运行队列为单位跟踪负载;存在几个问题:一个运行队列存在很多个调度实体,所以无法存在当前的负载来源; 即使工作负载相对稳定的情况下,在rq级别跟踪负载,其值也会产生很大变化。(为什么?)为了解决以上问题:提出了PETL算法,PELT算法跟踪…

fork

dup_task_structsched_forkcopy_mmcopy_thread_tls

page_fault

预备处理do_page_faultdo_anonymous_pagedo_faultdo_wp_page

LangChain简单大模型应用

LangChain官方示例教程(Build a Simple LLM Application)。重新组织顺序及说明方式,更加适合新手阅读。LangChain官方示例教程(Build a Simple LLM Application):https://python.langchain.com/docs/tutorials/llm_chain/将该官方示例教程适当调整及优化依赖pip install lang…

Elasticsearch filter context 的实践案例

知识背景 在 ES 查询优化的建议里,很多时候为了避免算分逻辑和利用缓存逻辑,Elastic 会建议大家使用 filter 条件。 filter 的使用条件和原理具体可以参照之前写的博文《Elasticsearch filter context 的使用原理》 这里我们来研究 2 个实用案例,具体的感受一下 filter cont…

产品发展的六阶段

一个成熟的互联网产品从最初的创意到完全成熟,通常需要经历以下几个主要阶段。每个阶段都有特定的目标、核心任务和关键成果,以下是详细的解析。 一、创意阶段 1、创意阶段的核心目标 1.1 识别用户需求 创意阶段的首要任务是发现并明确目标用户的痛点和需求。通过市场调研、…

【unity]学习制作类银河恶魔城游戏-2-

导入新资产切割新资产切割完成修改大小和清晰度球体已经设置了刚体和碰撞体积,直接应用给人物,改名circle为player中心点问题 因为切割的原因,碰撞模型的中心点和人物的中心点不相吻合解决:在子路径下渲染人物图片,将二者的中心点手动对齐手动对齐保存更改更改碰撞体模型运…