Codeforces Round 993 (Div. 4)个人训练记录
Codeforces Round 993 (Div. 4)
只选择对我有价值的题目记录
E. Insane Problem
题目描述
给定五个整数 k k k, l 1 l_1 l1, r 1 r_1 r1, l 2 l_2 l2 和 r 2 r_2 r2,Wave 希望你帮助她计算满足以下所有条件的有序对 ( x , y ) (x, y) (x,y) 的数量:
- l 1 ≤ x ≤ r 1 l_1 \leq x \leq r_1 l1≤x≤r1。
- l 2 ≤ y ≤ r 2 l_2 \leq y \leq r_2 l2≤y≤r2。
- 存在一个非负整数 n n n,使得 y x = k n \frac{y}{x} = k^n xy=kn。
输入
- 第一行包含一个整数 t t t( 1 ≤ t ≤ 1 0 4 1 \leq t \leq 10^4 1≤t≤104),这里的 t t t 表示测试用例的数量。
- 对于每个测试用例,其唯一的一行包含五个整数 k k k, l 1 l_1 l1, r 1 r_1 r1, l 2 l_2 l2 和 r 2 r_2 r2( 2 ≤ k ≤ 1 0 9 2 \leq k \leq 10^9 2≤k≤109, 1 ≤ l 1 ≤ r 1 ≤ 1 0 9 1 \leq l_1 \leq r_1 \leq 10^9 1≤l1≤r1≤109, 1 ≤ l 2 ≤ r 2 ≤ 1 0 9 1 \leq l_2 \leq r_2 \leq 10^9 1≤l2≤r2≤109)。
输出
对于每个测试用例,在新的一行输出匹配的有序对 ( x , y ) (x, y) (x,y) 的数量。
示例
| Input(输入) | Output(输出) |
|---|---|
| 5 2 2 6 2 12 2 1 1000000000 1 1000000000 3 5 7 15 63 1000000000 1 5 6 1000000000 15 17 78 2596 20914861 | 12 1999999987 6 1 197 |
注意事项
- 在第三个测试用例中,匹配的有序对如下:
- ( 5 , 15 ) (5, 15) (5,15)
- ( 5 , 45 ) (5, 45) (5,45)
- ( 6 , 18 ) (6, 18) (6,18)
- ( 6 , 54 ) (6, 54) (6,54)
- ( 7 , 21 ) (7, 21) (7,21)
- ( 7 , 63 ) (7, 63) (7,63)
- 在第四个测试用例中,唯一有效的有序对是 ( 1 , 1000000000 ) (1, 1000000000) (1,1000000000)。
思路:
枚举加计数问题,通常只需要枚举其中一个,然后另一个是可以通过计算得到的。由于
x和y的范围告诉我们了,所以 k n k^n kn的范围我们也能知晓,上界为 r = r 2 / l 1 r=r_2 / l_1 r=r2/l1下取整,下界为 l = ( l 2 + r 1 − 1 ) / r 1 l = (l_2 + r_1 - 1) / r_1 l=(l2+r1−1)/r1向上取整。现在我们只需要调整一下方程为 y k n = x \frac{y}{k^n} = x kny=x,每枚举一个可行的 k n k^n kn后,我们用y的最小值和最大值即可求出在这个可行的 k n k^n kn下x的范围,通过计算即可得到个数。至于为啥要将方程调整成除法形式而不是更好计算的形式,自己思考一下就能明白,用乘法的话得到的y值不是一个接一个的,中间有很多空隙,导致不能直接通过计算得到个数,用除法可以解决这样的问题。
#include <bits/stdc++.h>
#define int long long
#define endl '\n'using namespace std;void solve(){int k,l1,r1,l2,r2;cin>>k>>l1>>r1>>l2>>r2;int l = (l2+r1-1)/r1;//下界int r = r2/l1; //上界int base = 1;int ans = 0;// cout<<l<<" "<<r<<endl;while(base<l) base*=k; //先找到范围内最小的k^nwhile(base<=r){int ll = (l2+base-1) / base;int rr = r2 / base;ll = max(l1,ll);rr = min(r1,rr);if(ll<=rr) ans += rr-ll+1;base*=k;}cout<<ans<<endl;
}signed main(){int T; cin>>T; while(T--)solve();return 0;
}
评述
这道题比较有参考价值,自己太笨了,第一时间竟然无从下手
----------------------------------------
F. Easy Demon Problem
题目描述
对于任意网格,Robot 将其美感定义为网格中元素的总和。
Robot 给出了一个长度为 n n n 的数组 a a a 和一个长度为 m m m 的数组 b b b 。你构造了一个 n n n 乘 m m m 的网格 M M M ,使得所有 1 ≤ i ≤ n 1 \leq i \leq n 1≤i≤n 和 1 ≤ j ≤ m 1 \leq j \leq m 1≤j≤m 都是 M i , j = a i ⋅ b j M_{i,j}=a_i\cdot b_j Mi,j=ai⋅bj 。
然后,Robot 会给出 q q q 个查询,每个查询都包含一个整数 x x x 。对于每个查询,请判断是否可以***精确地执行一次下面的操作,从而使 M M M 具有 x x x 的美感:
- 选择整数 r r r 和 c c c ,使得 1 ≤ r ≤ n 1 \leq r \leq n 1≤r≤n 和 1 ≤ c ≤ m 1 \leq c \leq m 1≤c≤m 都是整数。
- 设 M i , j M_{i,j} Mi,j 为 0 0 0 ,所有有序对 ( i , j ) (i,j) (i,j) 都是 i = r i=r i=r , j = c j=c j=c ,或都是 i = r i=r i=r 。
请注意,查询是不持久的,也就是说,在查询过程中,您不会将任何元素设置为 0 0 0 --您只需要输出是否可以找到 r r r 和 c c c ,如果执行了上述操作,网格的美观度将为 x x x 。此外,请注意,即使原始网格的美观度已经是 x x x ,您也必须对每个查询执行上述操作。
输入
第一行包含三个整数 n n n 、 m m m 和 q q q ( 1 ≤ n , m ≤ 2 ⋅ 1 0 5 , 1 ≤ q ≤ 5 ⋅ 1 0 4 1 \leq n,m \leq 2\cdot 10^5, 1 \leq q \leq 5\cdot 10^4 1≤n,m≤2⋅105,1≤q≤5⋅104 )–分别是 a a a 的长度、 b b b 的长度和查询次数。
第二行包含 n n n 个整数 a 1 , a 2 , … , a n a_1, a_2, \ldots, a_n a1,a2,…,an ( 0 ≤ ∣ a i ∣ ≤ n 0 \leq |a_i| \leq n 0≤∣ai∣≤n )。
第三行包含 m m m 个整数 b 1 , b 2 , … , b m b_1, b_2, \ldots, b_m b1,b2,…,bm ( 0 ≤ ∣ b i ∣ ≤ m 0 \leq |b_i| \leq m 0≤∣bi∣≤m )。
下面的 q q q 行中各包含一个整数 x x x ( 1 ≤ ∣ x ∣ ≤ 2 ⋅ 1 0 5 1 \leq |x| \leq 2\cdot 10^5 1≤∣x∣≤2⋅105 ),即通过将一行和一列中的所有元素都设置为 0 0 0 所获得的网格美感。
输出
对于每个测试用例,如果有办法执行上述操作,从而使美景为 x x x ,则输出 “YES”(不带引号),否则输出 “NO”(不带引号)。
您可以在任何情况下输出 "YES "和 “NO”(例如,字符串 “yES”、"yes "和 "Yes "将被视为肯定回答)。
样例1
3 3 6
-2 3 -3
-2 2 -1
-1
1
-2
2
-3
3
输出
NO
YES
NO
NO
YES
NO
思路

评述
一道不错的题就是题目有点难读,其中提前预处理出所有情况再来处理询问的方式可以很有效的降低时间复杂度,也是这种题的经典做法。
#include <bits/stdc++.h>using namespace std;using ll = long long;
using ld = long double;
using pii = pair<int, int>;
using pll = pair<ll, ll>;#define inf 0x3f3f3f3f
#define infll 0x3f3f3f3f3f3f3f3fLLconst int N = 2e5 + 5;bool visA[2 * N + 5];
bool visB[2 * N + 5];bool ans[2 * N + 5];
void solve()
{int n, m, q;cin >> n >> m >> q;std::vector<ll> a(n);ll sumA = 0;for (int i = 0; i < n; i++){cin >> a[i];sumA += a[i];}std::vector<ll> b(m);ll sumB = 0;for (int i = 0; i < m; i++){cin >> b[i];sumB += b[i];}for (int i = 0; i < n; i++){ll d = sumA - a[i];if (abs(d) < N)visA[d + N] = 1;}for (int i = 0; i < m; i++){ll d = sumB - b[i];if (abs(d) < N)visB[d + N] = 1;}for (int i = 1; i < N; i++){for (int j = 1; j * i < N; j++){ans[N + i * j] |= visA[N + i] && visB[N + j];ans[N + i * j] |= visA[N - i] && visB[N - j];ans[N - i * j] |= visA[N + i] && visB[N - j];ans[N - i * j] |= visA[N - i] && visB[N + j];}}while (q--){int x;cin >> x;x += N;if (ans[x])cout << "YES\n";elsecout << "NO\n";}
}int main()
{ios::sync_with_stdio(false), std::cin.tie(0), std::cout.tie(0);// freopen("test.in", "r", stdin);// freopen("test.out", "w", stdout);int _ = 1;// std::cin >> _;while (_--){solve();}return 0;
}
相关文章:
Codeforces Round 993 (Div. 4)个人训练记录
Codeforces Round 993 (Div. 4) 只选择对我有价值的题目记录 E. Insane Problem 题目描述 给定五个整数 k k k, l 1 l_1 l1, r 1 r_1 r1, l 2 l_2 l2 和 r 2 r_2 r2,Wave 希望你帮助她计算满足以下所有条件的有序对 …...
【优选算法---分治】快速排序三路划分(颜色分类、快速排序、数组第K大的元素、数组中最小的K个元素)
一、颜色分类 题目链接: 75. 颜色分类 - 力扣(LeetCode) 题目介绍: 给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地 对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序…...
Spring Cloud OpenFeign
概述 Feign是一个声明式web服务客户端。可以像写接口一样定义http客户端。Feign还支持可插拔的编码器和解码器。Spring Cloud增加了对Spring MVC注释和使用Spring Web中默认使用的HttpMessageConverter的支持。Spring Cloud集成了Ribbon和Eureka,以及Spring Cloud L…...
Oracle 数据库函数的用法(一)
Oracle数据库提供了大量的内置函数,可以用于完成各种操作,如字符串操作,数学计算,日期时间处理,条件判断,序列生成,聚合统计等。以下是一些常用的Oracle数据库函数: 一、oracle 使用…...
【C2C+GRCC】Exploring Disentangled Content Information for Face Forgery Detection
文章目录 Exploring Disentangled Content Information for Face Forgery Detection背景key points研究贡献方法增强解纠缠特性的独立性实验数据内评估跨方法评估跨数据集评估消融实验总结Exploring Disentangled Content Information for Face Forgery Detection 会议/期刊:…...
springboot461学生成绩分析和弱项辅助系统设计(论文+源码)_kaic
摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装学生成绩分析和弱项辅助系统软件来发挥其高效地信息处理的作…...
Unity复刻胡闹厨房复盘 模块一 新输入系统订阅链与重绑定
本文仅作学习交流,不做任何商业用途 郑重感谢siki老师的汉化教程与代码猴的免费教程以及搬运烤肉的小伙伴 版本:Unity6 模板:3D 核心 渲染管线:URP ------------------------------…...
使用“NodeMCU”、“红外模块”实现空调控制
项目思路 空调遥控器之所以能够实现对空调的控制,是因为它能够向空调发射出特定的红外信号。从理论上来说,任何能够发射出这种相同红外信号的红外发射器,都可以充当空调遥控器(这也正是手机能够控制多种不同品牌空调的原因所在&a…...
2023年西南大学数学建模C题天气预报解题全过程文档及程序
2023年西南大学数学建模 C题 天气预报 原题再现: 天气现象与人类的生产生活、社会经济、军事活动等方方面面都密切相关,大到国家,小到个人,都受到极端天气的影响。2022年6月,全球陆地地区出现了自1850年代末人类有系…...
【大模型】使用DPO技术对大模型Qwen2.5进行微调
前言 定义 DPO(Direct Preference Optimization)即直接偏好优化算法,是一种在自然语言处理领域,特别是在训练语言模型时使用的优化策略。它的主要目的是使语言模型的输出更符合人类的偏好。 背景和原理 在传统的语言模型训练中&a…...
Maven 生命周期
文章目录 Maven 生命周期- Clean 生命周期- Build 生命周期- Site 生命周期 Maven 生命周期 Maven 有以下三个标准的生命周期: Clean 生命周期: clean:删除目标目录中的编译输出文件。这通常是在构建之前执行的,以确保项目从一个…...
网络不通该如何手动下载torch
如果遇到pip install torch2.5.0 下载不了的情况,大部分是网络的问题.可以考虑下载wheel文件在去安装 查看对应的cuda版本(举个例子:cuda为12.4,找到这个版本的 复制到服务器上下载): 有conda和pip下载的两种方式,二者选其一:如果没有安装anaconda,就直接使用pip的方式下载 如…...
基础电路的学习
1、戴维南定理 ①左边的图可简化为一个电阻+一个电压源。② ③电压源可相当于开路。将R2移到左边,R1和R2相当于并联。RR1//R2 Rx和Rt相等时,灵敏度最大,因此使Rt10K。 104电容是0.1uf。 三位数字的前两位数字为标称容量的有效数…...
对 MYSQL 架构的了解
MySQL 是一种广泛使用的关系型数据库管理系统,其架构主要包括以下几个关键部分: 一、连接层 客户端连接管理:MySQL 服务器可以同时处理多个客户端的连接请求。当客户端应用程序(如使用 Java、Python 等语言编写的程序)…...
C#中方法参数传值和传引用的情况
对于引用类型 - 传类类型的具体值时 此时传的是引用 - 单纯传类类型 此时传的是个test引用的副本,在方法内修改的是这个副本的指向 传string,集合同理,只要是指向新对象,就是引用副本在指向 对于值类型 - 传普通值类型 …...
获取显示器(主/副屏)友好名称(FriendlyName)
在开发涉及多显示器的应用程序时,获取显示器的友好名称(Friendly Name)是一个常见需求。本文将深入探讨GetMonitorFriendlyName 方法,了解其实现细节和工作原理。 方法签名 public static string GetMonitorFriendlyName(bool i…...
Apache Solr RCE(CVE-2017-12629)--vulhub
Apache Solr 远程命令执行漏洞(CVE-2017-12629) Apache Solr 是一个开源的搜索服务器。Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。原理大致是文档通过Http利用XML加到一个搜索集合中。查询该集合也是通过 http收到一个…...
2.3 携程的hook实现及dlsym函数
背景知识:(排除static 情况) 一个进程中可以有相同的命名吗? -- 不能 两个进程之间可以有相同的命名吗?--可以 一个进程和另一个静态库可以有相同的命名吗?--不能 一个进程和另一个动态库之间可以有相同…...
机器学习之KNN算法
K-Nearest Neighbors (KNN) 是一种常见的机器学习算法,广泛应用于分类和回归问题。KNN是一种基于实例的学习方法,它利用训练数据集的实例来进行分类或回归预测。在KNN中,预测的结果依赖于距离度量函数计算出的最近邻实例的标签或值。下面我们…...
《全排列问题》
题目描述 按照字典序输出自然数 11 到 nn 所有不重复的排列,即 nn 的全排列,要求所产生的任一数字序列中不允许出现重复的数字。 输入格式 一个整数 nn。 输出格式 由 1∼n1∼n 组成的所有不重复的数字序列,每行一个序列。 每个数字保留…...
iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...
保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...
人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent
安全大模型训练计划:基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标:为安全大模型创建高质量、去偏、符合伦理的训练数据集,涵盖安全相关任务(如有害内容检测、隐私保护、道德推理等)。 1.1 数据收集 描…...
如何应对敏捷转型中的团队阻力
应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中,明确沟通敏捷转型目的尤为关键,团队成员只有清晰理解转型背后的原因和利益,才能降低对变化的…...
深入浅出Diffusion模型:从原理到实践的全方位教程
I. 引言:生成式AI的黎明 – Diffusion模型是什么? 近年来,生成式人工智能(Generative AI)领域取得了爆炸性的进展,模型能够根据简单的文本提示创作出逼真的图像、连贯的文本,乃至更多令人惊叹的…...
