当前位置: 首页 > news >正文

AtcoderABC226场

A - Round decimalsA - Round decimals

在这里插入图片描述在这里插入图片描述

题目大意

给定一个实数X,它最多可以使用三位小数表示,而且X的小数点后有三位小数。将X四舍五入到最接近的整数并打印结果。

思路分析

可以使用round函数进行四舍五入

知识点

round(x) 是一个用来对数字进行四舍五入的函数。它接受一个参数 x,可以是整数、浮点数或其他可转换为数字的对象。该函数会根据传入的值 x 进行四舍五入,并返回一个最接近 x 的整数。

具体的规则如下:

  • 如果 x 是一个正数且小数部分大于等于 0.5,则 round(x) 返回大于 x 的最接近整数;
  • 如果 x 是一个正数且小数部分小于 0.5,则 round(x) 返回小于 x 的最接近整数;
  • 如果 x 是一个负数且小数部分绝对值大于等于 0.5,则 round(x) 返回小于 x 的最接近整数;
  • 如果 x 是一个负数且小数部分绝对值小于 0.5,则 round(x) 返回大于 x 的最接近整数;
  • 如果 x 是一个整数,则 round(x) 直接返回 x。

以下是一些例子:

  • round(3.2) 返回 3。
  • round(4.8) 返回 5。
  • round(-2.5) 返回 -2。
  • round(6) 返回 6。

时间复杂度

O(1)

AC代码

#include <iostream>
#include <cmath>
using namespace std;
int main() {double x;cin >> x;cout <<(int)(round(x)) << endl;return 0;
}

B - Counting ArraysB - Counting Arrays

在这里插入图片描述在这里插入图片描述在这里插入图片描述

题目大意

给定N个序列,每个序列的长度为Li,并且第i个序列的第j个元素为ai,j。当且仅当序列i和序列j的长度相等且对应位置的元素相等时,认为序列i和序列j相同。求这N个序列中有多少个不同的序列。

思路分析

可以使用集合(set)来存储不同的序列。对于每一个序列,将其存储为一个vector,然后将该向量插入到set中。由于set会自动去重,所以最终set中存储的向量数量就是不同序列的数量。

时间复杂度

O(NMlogN)

AC代码

#include <iostream>
#include <set>
#include <vector>
using namespace std;int main() {int N;cin >> N;set<vector<int>> st;for(int i = 0; i < N; i++) {int L;cin >> L;vector<int> v(L);for (auto& x : v) cin >> x;st.insert(v);}cout << st.size() << "\n";
}

C - Martial artistC - Martial artist

在这里插入图片描述在这里插入图片描述在这里插入图片描述

题目大意

Takahashi是一位武术家。有N个他可以学习的招式,分别称为Move 1, Move 2, …, Move N。每个招式需要Ti分钟的练习时间才能学会。此外,在开始练习之前,必须已经学会所有的招式A[i][j]。其中,对于每个招式i,保证A[i][j] < i对于每个1 ≤ j ≤ Ki。
Takahashi在时间0时还没有学会任何招式。他不能同时练习多个招式,也不能停止已经开始的练习。找出Takahashi学会Move N所需的最少分钟数。

思路分析

贪心算法
针对每个招式i,如果已经学会了该招式的前置招式A[i][j],那么就可以开始练习招式i,并且需要消耗Ti分钟的练习时间。使用一个bool数组used[N]来记录每个招式是否被使用过。

从最后一个招式N开始向前遍历,如果该招式已经被使用(即前面的招式都已经学会),则将其练习时间Ti加到答案ans上,同时将它所依赖的前置招式全部标记为已使用。
最后输出答案ans即为学会Move N所需的最少分钟数。

时间复杂度

O(N)

AC代码

#include <bits/stdc++.h>
using namespace std;
#define N 200100
#define ll long long
#define rep(i, n) for(int i = 0; i < n; ++i)ll t[N]; // 存储每个招式的练习时间
int k[N]; // 存储每个招式的前置招式的数量
vector<int> e[N]; // 存储每个招式的前置招式的索引
bool used[N]; // 记录每个招式是否被使用过int main(void) {int n, x;ll ans = 0;rep(i, N) used[i] = false;cin >> n;rep(i, n) {cin >> t[i];cin >> k[i];rep(j, k[i]) {cin >> x;e[i].push_back(x - 1);}}used[n - 1] = true;for (int i = n - 1; i >= 0; i--) {if (used[i]) {ans += t[i];rep(j, k[i]) {used[e[i][j]] = true;}}}cout << ans << endl;return 0;
}
http://www.lryc.cn/news/111255.html

相关文章:

  • Linux知识点 -- VS Code远程连接服务器协助开发
  • blender基础认识(选项开关、工具栏、视图等)
  • React Hooks 中的属性详解
  • 工作遇到问题与解决办法(一)
  • 综合与新综合与新型交通发展趋势[75页PPT]
  • 【树形DP+换根思想】2022牛客多校加赛 H
  • Gitlab CI/CD笔记-第二天-GitOps的流水线常用关键词(1)
  • Spring Boot3.0(一):入门篇
  • 各种排序333
  • [C++] 类与对象(中)完整讲述运算符重载示例 -- 日期类(Date) -- const成员
  • wonderful-sql 作业
  • Go学习第六天
  • opencv-34 图像平滑处理-2D 卷积 cv2.filter2D()
  • Java 克隆技术详解,深拷贝与浅拷贝的区别及实现
  • 包装器function
  • Django Rest_Framework(三)
  • 总结 IO、存储、硬盘、文件系统相关常识
  • JavaScript、深入浅出Node.js前端技能汇总
  • use gnustep objective-c
  • 8.15锁的优化
  • 单片机复位电路分析
  • 公文写作技巧:“三面镜子”写作提纲60例
  • useEffect中的函数会执行2次原因
  • 更新k8s环境支付系统支付证书
  • C#的yield
  • 外卖多门店小程序开源版开发
  • 打印图案、
  • # Windows 环境下载 Android 12源码
  • 【运维面试】Docker技术面试题总结
  • CNN成长路:从AlexNet到EfficientNet(01)