Codeforces Round 995 (Div.3)

比赛链接: Codeforces Round 995

Github 链接: CF995

A. Preparing for the Olympiad

a i > b i + 1 a_i > b_{i + 1} ai>bi+1 时,将 a i − b i + 1 a_i - b_{i + 1} aibi+1 加入答案。最后将 a n a_n an 加入答案。

时间复杂度: O ( t n ) O(tn) O(tn)

#include <bits/stdc++.h>
using namespace std;

const int N = 105;
int a[N], b[N], n;

inline int read() {
	int x = 0, f = 1; char c = getchar();
	while (c < '0' || c > '9') { if (c == '-') f = -1; c = getchar(); }
	while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
	return x * f;
}

int main() {
	int t = read();
	while (t--) {
		n = read();
		for (int i = 1; i <= n; i++) a[i] = read();
		for (int i = 1; i <= n; i++) b[i] = read();
		int ans = 0;
		for (int i = 1; i < n; i++) ans += a[i] - b[i + 1] > 0 ? a[i] - b[i + 1] : 0;
		ans += a[n];
		printf("%d\n", ans);
	}
	return 0;
}

B. Journey

a a a, b b b, c c c 连着三天记为一轮,先算出总共走的完整轮数 ⌊ n a + b + c ⌋ \left\lfloor\frac{n}{a + b + c}\right\rfloor a+b+cn,最后再算剩下的路程 n n n % ( a + b + c ) (a + b + c) (a+b+c) 需要走多少天。

时间复杂度: O ( t ) O(t) O(t)

#include <bits/stdc++.h>
using namespace std;

inline int read() {
	int x = 0, f = 1; char c = getchar();
	while (c < '0' || c > '9') { if (c == '-') f = -1; c = getchar(); }
	while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
	return x * f;
}

int main() {
	int t = read();
	while (t--) {
		int n = read(), a = read(), b = read(), c = read();
		int ans = n / (a + b + c) * 3;
		n %= (a + b + c);
		if (n > 0) ans++, n -= a;
		if (n > 0) ans++, n -= b;
		if (n > 0) ans++, n -= c;
		printf("%d\n", ans);
	}
	return 0;
}

C. Preparing for the Exam

  • 如果 k < n − 1 k < n - 1 k<n1,那么不管是什么样的 l i s t list list 都无法通过。
  • 如果 k = n k = n k=n,那么可以通过所有的 l i s t list list
  • 如果 k = n − 1 k = n - 1 k=n1,那么只有当 q 1 ≤ i ≤ k q_{1 \le i \le k} q1ik 恰好为 a a a 中没有出现的 [ 1 , n ] [1, n] [1,n] 的整数时可以通过。

时间复杂度: O ( t ( n + m + k ) ) O(t(n + m + k)) O(t(n+m+k))

#include <bits/stdc++.h>
using namespace std;

const int N = 3e5 + 10;
int n, m, k, a[N], q, vis[N];

inline int read() {
	int x = 0, f = 1; char c = getchar();
	while (c < '0' || c > '9') { if (c == '-') f = -1; c = getchar(); }
	while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
	return x * f;
}

int main() {
	int t = read();
	while (t--) {
		n = read(), m = read(), k = read();
		for (int i = 1; i <= n; i++) vis[i] = 1;
		for (int i = 1; i <= m; i++) a[i] = read();
		for (int i = 1; i <= k; i++) q = read(), vis[q] = 0;
		if (k < n - 1) {
			for (int i = 1; i <= m; i++) putchar('0');
			puts("");
			continue;
		}
		if (k == n) {
			for (int i = 1; i <= m; i++) putchar('1');
			puts("");
			continue;
		}
		for (int i = 1; i <= m; i++) {
			if (vis[a[i]]) putchar('1');
			else putchar('0');
		}
		puts("");
	}
	return 0;
}

D. Counting Pairs

题目只关心选的两个数的大小,不关心数的位置,所以可以直接对 a a a 数组进行排序。排序后枚举整数对的第一个数 l l l,第二个数 r r r 满足 x ≤ s u m − a [ l ] − a [ r ] ≤ y x \le sum - a[l] - a[r] \le y xsuma[l]a[r]y,即

a [ r ] ≤ s u m − a [ l ] − x a [ r ] ≥ s u m − a [ l ] − y \begin{matrix} a[r] \le sum - a[l] - x \\ a[r] \ge sum - a[l] - y \end{matrix} a[r]suma[l]xa[r]suma[l]y

时间复杂度: O ( t n log ⁡ n ) O(tn\log n) O(tnlogn)

#include <bits/stdc++.h>
using namespace std;

#define int long long

const int N = 2e5 + 10;
int n, x, y, a[N], sum;

inline int read() {
	int x = 0, f = 1; char c = getchar();
	while (c < '0' || c > '9') { if (c == '-') f = -1; c = getchar(); }
	while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
	return x * f;
}

signed main() {
	int t = read();
	while (t--) {
		n = read(), x = read(), y = read(), sum = 0;
		for (int i = 1; i <= n; i++) a[i] = read(), sum += a[i];
		sort(a + 1, a + n + 1);
		int ans = 0;
		for (int l = 1; l <= n; l++) {
			if (sum - a[l] < x) break;
			int L = lower_bound(a + 1, a + n + 1, sum - a[l] - y) - a;
			int R = upper_bound(a + 1, a + n + 1, sum - a[l] - x) - a - 1;
			if (L <= R && R > l) ans += min(R - L + 1, R - l);
		}
		printf("%lld\n", ans);
	}
	return 0;
}

E. Best Price

在购买人数相同(比单价小的 b b b 数量一定)并且满足不超过 k k k 个差评的前提下,我们要让单价尽可能的大,因此单价一定为 a a a, b b b 数组中的某一个值。
因此,只需要枚举 a a a, b b b 中的每一个值作为商品单价,检查这个单价是否满足不超过 k k k 个差评的条件,最后算出这个单价下的总利润。

根据题目描述可以发现最终结果与 a a a, b b b 的顺序无关:

  • 是否购买由 b b b 决定,单价一定的情况下,无论如何调整顺序不会影响购买人数。
  • 购买的所有人中,所有人的 b b b 一定都大于等于单价,因此好评与差评只与 a a a 的大小有关,无论如何调整 a a a 数组的顺序, a a a 与单价之间的大小关系不会改变。

因此可以分别对 a a a, b b b 数组进行排序。

每次都可以利用二分分别在 a a a, b b b 数组中差评个数和购买人数,然后直接计算出总利润。

#include <bits/stdc++.h>
using namespace std;

#define int long long

const int N = 2e5 + 10;
int n, k, a[N], b[N], p[N << 1];

inline int read() {
	int x = 0, f = 1; char c = getchar();
	while (c < '0' || c > '9') { if (c == '-') f = -1; c = getchar(); }
	while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
	return x * f;
}

signed main() {
	int t = read();
	while (t--) {
		n = read(), k = read();
		for (int i = 1; i <= n; i++) a[i] = read();
		for (int i = 1; i <= n; i++) b[i] = read();
		sort(a + 1, a + n + 1), sort(b + 1, b + n + 1);
		int pp = 1, p1 = 1, p2 = 1;
		while (p1 <= n || p2 <= n) {
			if (p1 > n) p[pp++] = b[p2++];
			else if (p2 > n) p[pp++] = a[p1++];
			else if (a[p1] > b[p2]) p[pp++] = b[p2++];
			else p[pp++] = a[p1++];
		}
		int ans = 0;
		for (int i = 1; i <= 2 * n; i++) {
			int pos = lower_bound(a + 1, a + n + 1, p[i]) - a - 1;
			int idx = lower_bound(b + 1, b + n + 1, p[i]) - b;
			if (pos - idx + 1 <= k) ans = max(ans, p[i] * (n - idx + 1));
		}
		printf("%lld\n", ans);
	}
	return 0;
}

时间复杂度: O ( t n log ⁡ n ) O(tn\log n) O(tnlogn)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

windows远程桌面无法连接,报错:“由于没有远程桌面授权服务器可以提供许可证,远程会话被中断。请跟服务器管理员联系”

windows远程桌面无法连接&#xff0c;报错&#xff1a;“由于没有远程桌面授权服务器可以提供许可证&#xff0c;远程会话被中断。请跟服务器管理员联系” 问题描述&#xff1a;解决方法&#xff1a;无法删除条目解决如下&#xff1a;正常激活详见&#xff1a;[RDS远程服务激活…

【JVM】总结篇-类的加载篇之 类的加载器 和ClassLoader分析

文章目录 类的加载器ClassLoader自定义类加载器双亲委派机制概念源码分析优势劣势如何打破Tomcat 沙箱安全机制JDK9 双亲委派机制变化 类的加载器 获得当前类的ClassLoader clazz.getClassLoader() 获得当前线程上下文的ClassLoader Thread.currentThread().getContextClassLoa…

蓝色简洁引导页网站源码

一款蓝色的简洁引导页&#xff0c;适合资源分发和网站备用引导。 1.源码上传至虚拟机或者服务器 2.绑定域名和目录 3.访问域名安装 4.安装完成后就行了 https://pan.quark.cn/s/b2d8b9c5dc7f https://pan.baidu.com/s/17h1bssUNhhR9DMyNTc-i9Q?pwd84sf https://caiyun.139.com…

Linux驱动开发(18):linux驱动并发与竞态

并发是指多个执行单元同时、并行执行&#xff0c;而并发的执行单元对共享资源(硬件资源和软件上的全局变量、静态变量等)的访问 则很容易导致竞态。对于多核系统&#xff0c;很容易理解&#xff0c;由于多个CPU同时执行&#xff0c;多个CPU同时读、写共享资源时很容易造成竞态。…

docker中使用Volume完成数据共享

情景概述 在一个docker中&#xff0c;部署两个MySQL容器&#xff0c;假如它们的数据都存储在自己容器内部的data目录中。这样的存储方式会有以下问题&#xff1a; 1.无法保证两个MySQL容器中的数据同步。 2.容器删除后&#xff0c;数据就会丢失。 基于以上问题&#xff0c;容…

django StreamingHttpResponse fetchEventSource实现前后端流试返回数据并接收数据的完整详细过程

django后端环境介绍&#xff1a; Python 3.10.14 pip install django-cors-headers4.4.0 Django5.0.6 django-cors-headers4.4.0 djangorestframework3.15.2 -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple 总环境如下&#xff1a; Package Version -…

R机器学习:神经网络算法的理解与实操,实例解析

神经网络算法是一种模仿生物神经网络&#xff08;尤其是人脑&#xff09;结构和功能的算法。它由大量相互连接的节点&#xff08;称为神经元&#xff09;组成&#xff0c;这些神经元组织成层&#xff0c;通过传递信号来处理信息。神经网络算法在机器学习、人工智能等领域中扮演…

供应链系统设计-供应链中台系统设计(七)- 商品中心设计篇

概述 上篇文章我们大致讲了一些商品中心相关的概念&#xff0c;例如&#xff1a;SPU、SKU、Item等等&#xff0c;在这里我们来简单的回顾一下&#xff1a; 商品概念的分层与定义&#xff1a; SPU&#xff08;Standard Product Unit&#xff09;&#xff1a;代表产品系列或产品…

人工智能在SEO中的应用与关键词优化策略

内容概要 随着科技的迅猛发展&#xff0c;人工智能在搜索引擎优化&#xff08;SEO&#xff09;中的应用逐渐成为业界关注的热点。AI技术不仅可以有效提高关键词的优化策略&#xff0c;还能在提升内容效率、增强用户体验方面发挥重要作用。通过对相关技术的深入探讨&#xff0c…

EPS32基础篇开发

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 开发 EPS32基础篇 前言一、GPIO输入输出GPIO可设置一下4种状态代码示例&#xff1a;检测按键&#xff0c;按下时&#xff1a;LED亮&#xff0c;松开时&#xff0c;LED灭 二、…

Backend - C# 的日志 NLog日志

目录 一、注入依赖和使用 logger 二、配置记录文件 1.安装插件 NLog 2.创建 nlog.config 配置文件 3. Programs配置日志信息 4. 设置 appsettings.json 的 LogLevel 5. 日志设定文件和日志级别的优先级 &#xff08;1&#xff09;常见的日志级别优先级 &#xff08;2&…

【游戏设计原理】47 - 超游戏思维

对于这条原理&#xff0c;我首先想到的是开放世界&#xff0c;或者探索性游戏&#xff0c;这是最能包容各类玩家的游戏类型。这类游戏定义了基本规则&#xff0c;玩家的可操作性很强。就像上图里的沙池一样&#xff0c;里面有滑梯&#xff0c;是规则性比较明确的&#xff0c;而…

24年无人机行业资讯 | 12.23-12.29

24年无人机行业资讯 | 12.23-12.29 1、 国家发改委新设低空经济司&#xff0c;助力低空经济规范发展2、商务部支持无人机民用国际贸易&#xff0c;强调出口管制与安全并重3、滨州高新区首架无人机成功下线4、 2025第九届世界无人机大会筹备推进会顺利召开5、2024年世界无人机竞…

【专题】2024年出口跨境电商促销趋势白皮书报告汇总PDF洞察(附原数据表)

原文链接&#xff1a;https://tecdat.cn/?p38722 在当今全球化加速演进、数字经济蓬勃发展的大背景下&#xff0c;跨境电商行业正以前所未有的态势重塑国际贸易格局&#xff0c;成为各方瞩目的焦点领域。 根据亚马逊发布的《2024年出口跨境电商促销趋势白皮书》&#xff0c;…

SMMU软件指南之系统架构考虑

安全之安全(security)博客目录导读 目录 5.1 I/O 一致性 5.2 客户端设备 5.2.1 地址大小 5.2.2 缓存 5.3 PCIe 注意事项 5.3.1 点对点通信 5.3.2 No_snoop 5.3.3 ATS 5.4 StreamID 分配 5.5 MSI 本博客介绍与 SMMU 相关的一些系统架构注意事项。 5.1 I/O 一致性 如…

mysql自定义安装

1、下载安装包 我是在windows上安装&#xff0c;所以选择“Mysql Installer for Windows” 2、安装mysql 双击“mysql-installer-community-8.0.40.0.msi”&#xff0c;开始启动安装 这里选择安装项&#xff0c;这里只选择了两项。workbench是图形化管理工具&#xff0c;比较吃…

Python、R用深度学习神经网络组合预测优化能源消费总量时间序列预测及ARIMA、xgboost对比...

全文链接&#xff1a;https://tecdat.cn/?p38726 分析师&#xff1a;Qingxia Wang 在能源领域&#xff0c;精准预测能源消费总量对制定合理能源战略至关重要。当前&#xff0c;能源消费预测分析主要运用单一模型&#xff08;如灰色预测法、时间序列分析法等&#xff09;和组合…

AI周报(12.29-1.4)

AI应用-微软BiomedParse一键解析九大成像模式 BiomedParse是一款由微软和华盛顿大学等机构联合开发的生物医学图像解析模型&#xff0c;能够一键解析九大生物医学成像模式。该模型通过文本驱动的方式&#xff0c;整合了包括MRI、CT、病理学等多种成像模式&#xff0c;实现了高…

电商Google广告:2025年提升转化率的5种策略

展望 2025 年&#xff0c;Google 广告领域将迎来一系列显著变化&#xff0c;这些趋势对于提升广告转化率至关重要&#xff0c;值得我们提前关注与布局。 智能化程度持续加深&#xff0c;用户搜索习惯愈发精细&#xff0c;广告格式推陈出新&#xff0c;视频广告势头正猛...那么…

一文讲清楚HTTP常见的请求头和应用

文章目录 一文讲清楚HTTP常见的请求头和应用1. 啥是个HTTP请求头2. 常见的请求头&#xff0c;作用和示例3.协商缓存4.会话状态 一文讲清楚HTTP常见的请求头和应用 1. 啥是个HTTP请求头 一句话&#xff0c;说白了就是限定HTTP传输的一些规则参数&#xff0c;比如Accept&#xf…