Codeforces Round 993 (Div. 4)(补题)

news/2025/3/10 6:03:50/文章来源:https://www.cnblogs.com/califeee/p/18624120

Codeforces Round 993 (Div. 4)

只选择对我有价值的题目记录

E. Insane Problem

题目描述

给定五个整数 \(k\)\(l_1\)\(r_1\)\(l_2\)\(r_2\),Wave 希望你帮助她计算满足以下所有条件的有序对 \((x, y)\) 的数量:

  1. \(l_1 \leq x \leq r_1\)
  2. \(l_2 \leq y \leq r_2\)
  3. 存在一个非负整数 \(n\),使得 \(\frac{y}{x} = k^n\)

输入

  1. 第一行包含一个整数 \(t\)\(1 \leq t \leq 10^4\)),这里的 \(t\) 表示测试用例的数量。
  2. 对于每个测试用例,其唯一的一行包含五个整数 \(k\)\(l_1\)\(r_1\)\(l_2\)\(r_2\)\(2 \leq k \leq 10^9\)\(1 \leq l_1 \leq r_1 \leq 10^9\)\(1 \leq l_2 \leq r_2 \leq 10^9\))。

输出

对于每个测试用例,在新的一行输出匹配的有序对 \((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, 45)\)
    • \((6, 18)\)
    • \((6, 54)\)
    • \((7, 21)\)
    • \((7, 63)\)
  • 在第四个测试用例中,唯一有效的有序对是 \((1, 1000000000)\)

思路:

枚举加计数问题,通常只需要枚举其中一个,然后另一个是可以通过计算得到的。由于xy的范围告诉我们了,所以\(k^n\)的范围我们也能知晓,上界为\(r=r_2 / l_1\)下取整,下界为\(l = (l_2 + r_1 - 1) / r_1\)向上取整。现在我们只需要调整一下方程为\(\frac{y}{k^n} = x\),每枚举一个可行的\(k^n\)后,我们用y的最小值和最大值即可求出在这个可行的\(k^n\)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\) 的数组 \(a\) 和一个长度为 \(m\) 的数组 \(b\) 。你构造了一个 \(n\)\(m\) 的网格 \(M\) ,使得所有 \(1 \leq i \leq n\)\(1 \leq j \leq m\) 都是 \(M_{i,j}=a_i\cdot b_j\)

然后,Robot 会给出 \(q\) 个查询,每个查询都包含一个整数 \(x\) 。对于每个查询,请判断是否可以***精确地执行一次下面的操作,从而使 \(M\) 具有 \(x\) 的美感:

  1. 选择整数 \(r\)\(c\) ,使得 \(1 \leq r \leq n\)\(1 \leq c \leq m\) 都是整数。
  2. \(M_{i,j}\)\(0\) ,所有有序对 \((i,j)\) 都是 \(i=r\)\(j=c\) ,或都是 \(i=r\)

请注意,查询是不持久的,也就是说,在查询过程中,您不会将任何元素设置为 \(0\) --您只需要输出是否可以找到 \(r\)\(c\) ,如果执行了上述操作,网格的美观度将为 \(x\) 。此外,请注意,即使原始网格的美观度已经是 \(x\) ,您也必须对每个查询执行上述操作。

输入

第一行包含三个整数 \(n\)\(m\)\(q\) ( \(1 \leq n,m \leq 2\cdot 10^5, 1 \leq q \leq 5\cdot 10^4\) )--分别是 \(a\) 的长度、 \(b\) 的长度和查询次数。

第二行包含 \(n\) 个整数 \(a_1, a_2, \ldots, a_n\) ( \(0 \leq |a_i| \leq n\) )。

第三行包含 \(m\) 个整数 \(b_1, b_2, \ldots, b_m\) ( \(0 \leq |b_i| \leq m\) )。

下面的 \(q\) 行中各包含一个整数 \(x\) ( \(1 \leq |x| \leq 2\cdot 10^5\) ),即通过将一行和一列中的所有元素都设置为 \(0\) 所获得的网格美感。

输出

对于每个测试用例,如果有办法执行上述操作,从而使美景为 \(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;
}

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

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

相关文章

函数是什么

建设 邮政 中国工商银行

【多线程】原子类

JDK原子类基于CAS轻量级原子操作实现,使得程序运行效率变得更高。 (1)基本原子类基本原子类的功能是通过原子方式更新Java基础类型变量的值。基本原子类主要包括以下三个: AtomicInteger:整型原子类。 AtomicLong:长整型原子类。 AtomicBoolean:布尔型原子类。 (…

我的世界服务端插件安装 AuthMe用户登录插件安装

Minecraft服务端插件安装-AuthMe用户登录插件安装 需要准备AuthMe插件AuthMe-5.6.0.jar用户登录插件例如使用/register <密码> <确认密码>进行注册,使用/login <密码>进登录 AuthMe插件AuthMe 是一个广泛用于 Minecraft 服务器的插件,主要用于账户验证和注…

【数理统计】假设检验

目录假设检验的概念单个总体正态分布的假设检验正态总体均值 \(\mu\) 的假设检验正态总体方差 \(\sigma^2\) 的假设检验两个总体正态分布的假设检验(略)例题 假设检验的概念 【定义】\(H_0\) 称为原假设,\(H_1\)称为对立假设,它们的内容相互对立。 使原假设 \(H_0\) 得以接…

PCIe扫盲——PCIe总线事务层入门(一)

在介绍事务层之前,首先简单地了解一下PCIe总线的通信机制。假设某个设备要对另一个设备进行读取数据的操作,首先这个设备(称之为Requester)需要向另一个设备发送一个Request,然后另一个设备(称之为Completer)通过Completion Packet返回数据或者错误信息。 在PCIe Spec中…

2024 新版DataGrip安装使用教程(附激活至2099年,以及常见问题处理)

DataGrip 简介 在数据库管理与开发领域,JetBrains 推出的 DataGrip 无疑是一款备受瞩目的工具。它以其对多种数据库引擎的广泛支持而著称,为开发人员和数据库管理员提供了一站式的便捷解决方案。 DataGrip 支持 MySQL、PostgreSQL 等开源数据库,能让使用这些流行数据库的开发…

解锁宠物用品行业的市场密码:看板软件如何助力精准用户调研?

看板软件可以通过数据可视化与分析、供应链优化、售后管理与服务提升以及品牌建设与用户互动等方式,为宠物用品行业解决用户调研中的痛点问题。然而,需要注意的是,看板软件只是解决方案的一部分,企业还需要结合实际情况和市场需求进行综合考虑和实施。宠物用品行业用户调研…

惊!冬至物流大忙,哪类办公软件能增强团队应急能力?

一、前言 冬至期间,物流行业面临着巨大的挑战与机遇。电商平台的促销活动让订单如潮水般涌来,物流 J 人团队需要高效协作,确保每一个包裹都能准确无误且迅速地送达客户手中。在这个关键时期,合适的可视化团队协作办公软件成为了提升工作效率与个人学习效率的得力助手。本文…

触摸芯片之滑条滚轮方案

完美解决了传统用户界面操作复杂和触摸响应异常的问题触摸芯片的常见应用形式:触摸按键模式 触摸滚轮模式 触摸滑条模式触摸按键-触摸开关、控制面板的多按键触摸 触摸滑条/滚轮-触摸调光、调音量、速度、进度、大小家电的状态 智慧家居必备神器——触摸芯片,触摸反应灵敏,无…

DL00358-基于YOLOv8的停车空位检测代码含数据集

YOLOv8(You Only Look Once Version 8)是基于深度学习的目标检测算法,近年来在图像处理领域取得了显著进展,尤其在实时目标检测任务中表现出色。停车空位检测作为计算机视觉应用中的一个重要研究方向,旨在通过智能化系统识别和判断停车场内的空闲车位,为车主提供实时的停…

小迪安全-基础入门-Web应用架构类别源码类别镜像容器建站模版编译封装前后端分离

Web应用&架构类别&源码类别&镜像容器&建站模版&编译封装&前后端分离知识点: 1、基础入门-Web应用-搭建架构上的技术要点 2、基础入门-Web应用-源码类别上的技术要点 一、演示案例-架构类别-模版&分离&集成&容器&镜像 1、套用模版型 c…