Atcoder Beginner Contest 385

news2025/1/1 12:03:07

比赛链接: Atcoder Beginner Contest 385
Github 链接:ABC385

A - Equally

只有三个数相等或者两个小的数加起来等于最大的数时输出 Y e s Yes Yes,其他时候输出 N o No No

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

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

int main() {
    ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
    int a[5];
    for (int i = 1; i <= 3; i++) cin >> a[i];
    sort(a + 1, a + 4);
    if (a[1] + a[2] == a[3] || (a[1] == a[2] && a[2] == a[3])) puts("Yes");
    else puts("No");
    return 0;
}

B - Santa Claus 1

按照题意模拟,用 v i s vis vis 数组记录经过的格子,最后统计这些格子中房子 ( @ @ @) 的个数。

时间复杂度: O ( H W + ∣ T ∣ ) O(HW + |T|) O(HW+T) ( ∣ T ∣ |T| T 代表字符串 T T T 的长度)。

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

int h, w, x, y, vis[105][105];
string s[150], t;

int main() {
	ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
	cin >> h >> w >> x >> y;
	for (int i = 1; i <= h; i++) {
		cin >> s[i];
		s[i] = " " + s[i];
	}
	cin >> t;
	for (int i = 0; i < t.size(); i++) {
		if (t[i] == 'U') {
			int xx = x - 1, yy = y;
			if (s[xx][yy] != '#') x = xx, y = yy, vis[xx][yy] = 1;
		}
		if (t[i] == 'D') {
			int xx = x + 1, yy = y;
			if (s[xx][yy] != '#') x = xx, y = yy, vis[xx][yy] = 1;
		}
		if (t[i] == 'L') {
			int xx = x, yy = y - 1;
			if (s[xx][yy] != '#') x = xx, y = yy, vis[xx][yy] = 1;
		}
		if (t[i] == 'R') {
			int xx = x, yy = y + 1;
			if (s[xx][yy] != '#') x = xx, y = yy, vis[xx][yy] = 1;
		}
	}
	int ans = 0;
	for (int i = 1; i <= h; i++)
		for (int j = 1; j <= w; j++)
			if (vis[i][j] && s[i][j] == '@') ans++;
	cout << x << ' ' << y << ' ' << ans << endl;
	return 0;
}

C - Illuminate Buildings

d p i , j dp_{i, j} dpi,j 表示考虑到第 i i i 位,间隔为 j j j 能装饰的建筑物数量。当 h i = h i − j h_i = h_{i - j} hi=hij 时,状态转移方程为 d p i , j = m a x ( d p i , j , d p i − j , j + 1 ) dp_{i, j} = max(dp_{i, j}, dp_{i - j, j} + 1) dpi,j=max(dpi,j,dpij,j+1)

时间复杂度: O ( N 2 ) O(N^2) O(N2)

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

const int N = 3005;
int n, h[N], dp[N][N];

int main() {
	ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
	cin >> n;
	for (int i = 1; i <= n; i++) cin >> h[i];
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= n; j++) dp[i][j] = 1;
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= i; j++) {
			if (i - j && h[i] != h[i - j]) continue;
			dp[i][j] = max(dp[i][j], dp[i - j][j] + 1);
		}
	}
	int ans = 0;
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= n; j++) ans = max(ans, dp[i][j]);
	cout << ans << endl;
	return 0;
}

D - Santa Claus 2

按照题意模拟过程。

找房子的方法:

  • 用两个 v e c t o r vector vector v x vx vx v y vy vy 分别存房子的坐标 ( x , y ) (x, y) (x,y) 和对应的 ( y , x ) (y, x) (y,x) 并进行排序。
  • 在上下移动的时候,利用二分在 v x vx vx 中找出经过的点存入 s e t set set 里面。
  • 在左右移动的时候,利用二分在 v y vy vy 中找出经过的点存入 s e t set set 里面。

时间复杂度: O ( M l o g 2 N ) O(Mlog^2N) O(Mlog2N)

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

#define int long long

int n, m, x, y;
set<pair<int, int>> vis;
vector<pair<int, int>> vx, vy;

bool cmp(const pair<int, int> &px, const pair<int, int> &py) {
	return px.first < py.first || (px.first == py.first && px.second < py.second);
}

pair<int, int> find(int fi, int sel, int ser, const vector<pair<int, int>> &v) {
	int L = lower_bound(v.begin(), v.end(), make_pair(fi, sel), cmp) - v.begin();
	int R = upper_bound(v.begin(), v.end(), make_pair(fi, ser), cmp) - v.begin() - 1;
	return {L, R};
}

signed main() {
	ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
	cin >> n >> m >> x >> y;
	for (int i = 1; i <= n; i++) {
		int xx, yy;
		cin >> xx >> yy;
		vx.push_back({xx, yy}), vy.push_back({yy, xx});
	}
	sort(vx.begin(), vx.end()), sort(vy.begin(), vy.end());
	while (m--) {
		char op; int c;
		cin >> op >> c;
		if (op == 'U') {
			pair<int, int> ans = find(x, y, y + c, vx);
			for (int i = ans.first; i <= ans.second; i++) vis.insert(vx[i]);
			y += c;
		}
		if (op == 'D') {
			pair<int, int> ans = find(x, y - c, y, vx);
			for (int i = ans.first; i <= ans.second; i++) vis.insert(vx[i]);
			y -= c;
		}
		if (op == 'L') {
			pair<int, int> ans = find(y, x - c, x, vy);
			for (int i = ans.first; i <= ans.second; i++) vis.insert({vy[i].second, vy[i].first});
			x -= c;
		}
		if (op == 'R') {
			pair<int, int> ans = find(y, x, x + c, vy);
			for (int i = ans.first; i <= ans.second; i++) vis.insert({vy[i].second, vy[i].first});
			x += c;
		}
	}
	cout << x << ' ' << y << ' ' << vis.size() << endl;
	return 0;
}

E - Snowflake Tree

可以发现在中心点和 x x x 确定之后,整棵雪花树就可以确定下来了。对于每一组中心点和 x x x,整棵雪花树的节点数量为 x × m i n ( d e g 1 ≤ i ≤ x ) + 1 x \times min(deg_{1 \le i \le x}) + 1 x×min(deg1ix)+1,其中 d e g deg deg 表示那 x x x 个节点对应的度数。

按照贪心的思想,我们可以枚举中心点,将中心点相邻的点按照度数从大到小进行排序 ( x x x 相同的情况下 m i n ( d e g 1 ≤ i ≤ x ) min(deg_{1 \le i \le x}) min(deg1ix) 越大,结果越优,所以要取最大的 x x x 个节点)。枚举 x x x,计算出对应的节点数量,就可以找到最大的节点数了。

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

const int N = 3e5 + 10;
int n, ans = 0;
vector<vector<int>> g;
vector<int> deg;

signed main() {
	ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
	cin >> n;
	g.resize(n + 1), deg.resize(n + 1);
	for (int i = 1; i < n; i++) {
		int u, v;
		cin >> u >> v;
		g[u].push_back(v), g[v].push_back(u);
		deg[u]++, deg[v]++;
	}
	for (int i = 1; i <= n; i++) {
		vector<int> v;
		for (int j : g[i]) v.push_back(deg[j]);
		sort(v.begin(), v.end(), [](int x, int y){
			return x > y;
		});
		int num = 0, tot = INT_MAX;
		for (int j : v) {
			num++, tot = min(tot, j);
			ans = max(ans, tot * num + 1);
		}
	}
	cout << n - ans << endl;
	return 0;
}

F - Visible Buildings

取相邻的两个建筑物,将这两个建筑物的顶点连一条直线,所有之前的截距的最大值就是答案。

为什么要取相邻的:可以证明如果两个建筑物之间还有建筑物,无论中间的建筑物是在直线的上方或者下方,中间的建筑物与两边建筑物的连线至少有一条的截距都大于两端建筑物连线的截距。所以对于同组数据,取相邻的两个建筑物连直线截距一定最大。

对于给定两个建筑物,可以根据建筑物顶点坐标 ( x i − 1 , h i − 1 ) (x_{i - 1}, h_{i - 1}) (xi1,hi1) ( x i , h i ) (x_i, h_i) (xi,hi) ( 2 ≤ i ≤ N 2 \le i \le N 2iN) 算出直线的方程。

直线方程为: y − h i − 1 = h i − h i − 1 x i − x i − 1 ( x − x i − 1 ) y - h_{i - 1} = \frac{h_i - h_{i - 1}}{x_i - x_{i - 1}}(x - x_{i - 1}) yhi1=xixi1hihi1(xxi1),即 y = h i − h i − 1 x i − x i − 1 x + h i − 1 − h i − h i − 1 x i − x i − 1 x i − 1 y = \frac{h_i - h_{i - 1}}{x_i - x_{i - 1}} x + h_{i - 1} - \frac{h_i - h_{i - 1}}{x_i - x_{i - 1}} x_{i - 1} y=xixi1hihi1x+hi1xixi1hihi1xi1

截距为: h i − 1 − h i − h i − 1 x i − x i − 1 x i − 1 h_{i - 1} - \frac{h_i - h_{i - 1}}{x_i - x_{i - 1}} x_{i - 1} hi1xixi1hihi1xi1

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

#define double long double

const int N = 2e5 + 10;
int n;
double x[N], h[N], ans = 0.0;
bool ok = false;

int main() {
	ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
	cin >> n;
	for (int i = 1; i <= n; i++) cin >> x[i] >> h[i];
	for (int i = 2; i <= n; i++) {
		double d = h[i - 1] - (h[i] - h[i - 1]) / (x[i] - x[i - 1]) * x[i - 1];
		if (d >= 0) ok = true;
		ans = max(ans, d);
	}
	if (ok) cout << fixed << setprecision(10) << ans << endl;
	else cout << -1 << endl;
	return 0;
}

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

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

相关文章

Quo Vadis, Anomaly Detection? LLMs and VLMs in the Spotlight 论文阅读

文章信息&#xff1a; 原文链接&#xff1a;https://arxiv.org/abs/2412.18298 Abstract 视频异常检测&#xff08;VAD&#xff09;通过整合大语言模型&#xff08;LLMs&#xff09;和视觉语言模型&#xff08;VLMs&#xff09;取得了显著进展&#xff0c;解决了动态开放世界…

药片缺陷检测数据集,8625张图片,使用YOLO,PASICAL VOC XML,COCO JSON格式标注,可识别药品是否有缺陷,是否完整

药片缺陷检测数据集&#xff0c;8625张图片&#xff0c;使用YOLO&#xff0c;PASICAL VOC XML&#xff0c;COCO JSON格式标注&#xff0c;可识别药品是否有缺陷&#xff0c;是否完整 有缺陷的标注信息&#xff1a; 无缺陷的标注信息 数据集下载&#xff1a; yolov11:https://d…

蓝桥杯速成教程{三}(adc,i2c,uart)

目录 一、adc 原理图​编辑引脚配置 Adc通道使能配置 实例测试 ​编辑效果显示 案例程序 badc 按键相关函数 测量频率占空比 main 按键的过程 显示界面的过程 二、IIC通信-eeprom 原理图AT24C02 引脚配置 不可用状态&#xff0c;用的软件IIC 官方库移植 At24c02手册 ​编辑…

第6章 图论

2024年12月25日一稿 &#x1f430;6.1 图的基本概念 6.1.1 图的定义和表示 6.1.2 图的同构 6.1.3 完全图与正则图 6.1.4 子图与补图 6.1.5 通路与回路 6.2 图的连通性 6.2.1 无向图的连通性 6.2.2 有向图的连通性 6.3 图的矩阵表示 6.3.1 关联矩阵 6.3.2 有向图的邻接矩阵…

数据库原理及应用(MySQL版-李月军)-习题参考答案

数据库原理及应用&#xff08;MySQL版&#xff09;-微课视频版 习题参考答案 习 题一 一&#xff0e;选择题 1、D 2、C 3、C 4、B 5、D 6、B 7、A 8、B 9、C 10、A 11、B 12、C 13、①A②B③C 14、①E②B 15、①B②C③B 16、B 17、A 18、D 二&#xff0e;填空题 1、文件…

从家谱的层级结构 - 组合模式(Composite Pattern)

组合模式&#xff08;Composite Pattern&#xff09; 组合模式&#xff08;Composite Pattern&#xff09;组合模式概述组合模式涉及的角色talk is cheap&#xff0c; show you my code总结 组合模式&#xff08;Composite Pattern&#xff09; 组合模式&#xff08;Composite…

路由器刷机TP-Link tp-link-WDR5660 路由器升级宽带速度

何在路由器上设置代理服务器&#xff1f; 如何在路由器上设置代理服务器&#xff1f; 让所有连接到该路由器的设备都能够享受代理服务器的好处是一个不错的选择&#xff0c;特别是当需要访问特定的网站或加速网络连接的时候。下面是一些您可以跟随的步骤&#xff0c;使用路由器…

免费干净!付费软件的平替款!

今天给大家介绍一个非常好用的电脑录屏软件&#xff0c;完全没有广告界面&#xff0c;非常的干净简洁。 电脑录屏 无广告的录屏软件 这个软件不需要安装&#xff0c;打开就能看到界面直接使用了。 软件可以全屏录制&#xff0c;也可以自定义尺寸进行录制。 录制的声音选择也非…

Pandas03

Pandas01 Pandas02 文章目录 内容回顾1 排序和统计函数2 缺失值处理2.1 认识缺失值2.2 缺失值处理- 删除2.3 缺失值处理- 填充非时序数据时序数据 3 Pandas数据类型3.1 数值类型和字符串类型之间的转换3.2 日期时间类型3.3 日期时间索引 4 分组聚合4.1 分组聚合的API使用4.2 分…

vue3使用element-plus,解决 el-table 多选框,选中后翻页再回来选中失效问题

问题&#xff1a;勾选的数据分页再回来回消失 1.在el-table中加 :row-key"getRowKey" const getRowKey (row) > { return row.id; // id必须是唯一的 }; 2.给type为selection的el-table-column添加上reserve-selection属性 <el-tableref"multipleTab…

BUU BRUTE 1

BUU BRUTE 1 启动靶机 让我们输入账户和密码&#xff0c;这里我们什么也不知道就随便输入一个试试 账户adimin密码1234 告诉我们密码错误&#xff0c;为四位数字&#xff0c;在这里没有说账号错误&#xff0c;说明账号就是admin 密码的话爆破一下从0000到9999 这里选择默认的…

Maple软件的安装和使用

文章目录 1.前言说明2.我为什么要学习Maple3.软件的安装4.如何使用4.1基本的赋值语句4.2函数的定义4.3三个类型的书写介质 5.指数运算5.1使用面板5.2自己输入 6.对数的使用 1.前言说明 众所周知&#xff0c;我虽然是一名这个计算机专业的学生&#xff0c;但是我对于数学&#…

vue之axios基本使用

文章目录 1. axios 网络请求库2. axiosvue 1. axios 网络请求库 <body> <input type"button" value"get请求" class"get"> <input type"button" value"post请求" class"post"> <!-- 官网提供…

javaEE-多线程案例-单例模式

目录 啥是设计模式? 一.饿汉式 实现步骤&#xff1a; 二.懒汉式 实现步骤: 三、懒汉式优化1 四.懒汉式优化2 五.懒汉式优化3 总代码: 单例模式是一种设计模式。 啥是设计模式? 设计模式好⽐象棋中的"棋谱".红⽅当头炮,⿊⽅⻢来跳.针对红⽅的⼀些⾛法,⿊…

TCP Analysis Flags 之 TCP Out-Of-Order

前言 默认情况下&#xff0c;Wireshark 的 TCP 解析器会跟踪每个 TCP 会话的状态&#xff0c;并在检测到问题或潜在问题时提供额外的信息。在第一次打开捕获文件时&#xff0c;会对每个 TCP 数据包进行一次分析&#xff0c;数据包按照它们在数据包列表中出现的顺序进行处理。可…

鸿蒙开发实战之“使用HiLog和HiSysEvent进行日志与系统事件管理”

HiLog和HiSysEvent作为鸿蒙&#xff08;HarmonyOS&#xff09;系统中进行日志记录和系统事件管理的关键组件&#xff0c;为开发者提供了强大的工具来追踪系统行为、调试应用以及监控设备状态。它们不仅简化了日志管理和事件追踪的流程&#xff0c;还提高了开发效率和系统可维护…

机器学习之PCA降维

主成分分析&#xff08;PCA&#xff0c;Principal Component Analysis&#xff09; 主成分分析&#xff08;PCA&#xff09;是一种常见的无监督学习技术&#xff0c;广泛应用于数据降维、数据可视化以及特征提取等任务。PCA的目标是通过线性变换将数据从高维空间映射到低维空间…

【CSS in Depth 2 精译_098】17.3:CSS 动画延迟技术与填充模式设置 + 17.4:通过 CSS 动画传递意图的秘诀

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第五部分 添加动效 ✔️【第 17 章 动画】 ✔️ 17.1 关键帧17.2 3D 变换下的动画设置 17.2.1 添加动画前页面布局的构建17.2.2 为布局添加动画 17.3 动画延迟与填充模式 ✔️17.4 通过动画传递意图…

python+PyMuPDF库:(一)创建pdf文件及内容读取和写入

目录 文档操作 打开文档 获取文档信息 删除页 复制页 移动页 选择重构合并 保存关闭 页对象操作 内容读取 获取页对象的字体样式 插入文本标签 插入文本内容 字体设置 insert_text添加文本 insert_textbox添加文本 插入图片 获取页面注释、链接、表单字段 …

Datawhale AI冬令营 动手学AI Agent

背景——什么是Agent 在人工智能领域&#xff0c;agent可以指一个能够感知环境并作出决策以实现特定目标的系统。比如&#xff0c;一个聊天机器人&#xff08;chatbot&#xff09;就是一个agent&#xff0c;它能够理解用户的输入并给出相应的回复。 学习目标 学会使用百宝箱…