AtCoder Beginner Contest 368
A.Cut(模拟)
题意:
有一叠 N N N张扑克牌,最上面的 i i i张扑克牌上写着一个整数 A _ i A\_i A_i。
你从牌堆底部取出 K K K张牌,将它们放在牌堆顶部,并保持它们的顺序。
操作后从上到下输出写在卡片上的整数。
分析:
我们先从 n − k + 1 n-k+1 n−k+1输出到 n n n,再从 1 1 1输出到 n − k n-k n−k。
代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
#define endl '\n'
#define PII pair<LL, LL>
const int maxn = 2e5 + 10;
const int INF = 2e9 + 5;
const int mod = 998244353;
int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int n, k;cin >> n >> k;vector<int> a(n + 1);for (int i = 1; i <= n; i++)cin >> a[i];for (int i = n - k + 1; i <= n; i++)cout << a[i] << " ";for (int i = 1; i <= n - k; i++)cout << a[i] << " ";cout << endl;return 0;
}
B.Decrease 2 max elements(模拟)
题意:
给你一个由 N N N个正整数 A = ( A _ 1 , A _ 2 , … , A _ N ) A = (A\_1, A\_2, \dots ,A\_N) A=(A_1,A_2,…,A_N)组成的序列。高桥重复下面的操作,直到 A A A包含的正整数元素不超过一个:
- 按降序排列 A A A。然后将 A _ 1 A\_1 A_1和 A _ 2 A\_2 A_2减少 1 1 1。
询问他执行此操作的次数。
分析:
我们用优先队列进行模拟,每次取出两个最小的,分别减 1 1 1,再加回到队列。直到第二小的不为正数。
代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
#define endl '\n'
#define PII pair<LL, LL>
const int maxn = 2e5 + 10;
const int INF = 2e9 + 5;
const int mod = 998244353;
int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int n;cin >> n;priority_queue<int> tmp;for (int i = 1; i <= n; i++){int x;cin >> x;tmp.push(x);}int ans = 0;while (1){int a = tmp.top();tmp.pop();int b = tmp.top();tmp.pop();if (b <= 0)break;a--;b--;ans++;tmp.push(a), tmp.push(b);}cout << ans << endl;return 0;
}
C.Triple Attack(思维)
题意:
你正在玩一个游戏。
有 N N N个敌人排成一排,最前面的 i i i个敌人的健康值是 H _ i H\_i H_i。
你将使用初始化为 0 0 0的变量 T T T重复以下操作,直到所有敌人的生命值都变为 0 0 0或更少。
- 将 T T T增加 1 1 1。然后,攻击最前方生命值大于等于 1 1 1的敌人。如果 T T T是 3 3 3的倍数,敌人的生命值会减少 3 3 3;否则,生命值会减少 1 1 1。
当所有敌人的生命值变为 0 0 0或更少时,求 T T T的值。
分析:
我们发现每三次攻击敌人都会扣 5 5 5滴血,对于敌人剩下小于 5 5 5滴血的情况,我们特判攻击次数是否是三的倍数即可。
代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
#define endl '\n'
#define PII pair<LL, LL>
const int maxn = 2e5 + 10;
const int INF = 2e9 + 5;
const int mod = 998244353;
int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int n;cin >> n;LL ans = 0;for (int i = 0; i < n; i++){int h;cin >> h;ans += (h / 5) * 3;h %= 5;while (h > 0){ans++;if (ans % 3 == 0){h -= 3;}else{h--;}}}cout << ans << endl;return 0;
}
D.Minimum Steiner Tree(DFS)
题意:
给你一棵树,树上有 N N N个顶点,编号为 1 1 1到 N N N。第 i i i条边连接顶点 A _ i A\_i A_i和 B _ i B\_i B_i。
考虑从这个图中删除一些边和顶点(可能为零)后可以得到一棵树。求这样一棵树中包含所有 K K K指定顶点 V _ 1 , … , V _ K V\_1,\ldots,V\_K V_1,…,V_K的顶点的最小数目。
分析:
我们以第一个保留的点为根,进行 d f s dfs dfs。在 d f s dfs dfs过程中的当前点 u u u,判断其是否需要保留,那么我们就需要知道其子树是否有需要保留的点,有则当前点 u u u需要保留。因此 D F S DFS DFS返回的东西即为该子树是否有需要保留的点。
代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
#define endl '\n'
#define PII pair<LL, LL>
const int maxn = 2e5 + 10;
const int INF = 2e9 + 5;
const int mod = 998244353;
vector<int> e[maxn];
int tmp[maxn], ans;
void dfs(int u, int fa)
{for (auto v : e[u]){if (v == fa)continue;dfs(v, u);if (tmp[v])tmp[u] = 1;}
}
int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int n, k;cin >> n >> k;for (int i = 1; i < n; i++){int u, v;cin >> u >> v;e[u].push_back(v), e[v].push_back(u);}int x;for (int i = 1; i <= k; i++){cin >> x;tmp[x] = 1;}dfs(x, -1);for (int i = 1; i <= n; i++)ans += tmp[i];cout << ans << endl;return 0;
}
E.Train Delay (思维)
题意:
在 Atcoder 国家,有 N N N座城市,编号为 1 1 1至 N N N,以及 M M M列火车,编号为 1 1 1至 M M M。列车 i i i在 S _ i S\_i S_i时刻从城市 A _ i A\_i A_i出发,在 T _ i T\_i T_i时刻到达城市 B _ i B\_i B_i。
给定一个正整数 X _ 1 X\_1 X_1,请你找到一组满足下列条件的非负整数 X _ 2 , … , X _ M X\_2,\ldots,X\_M X_2,…,X_M,使得他们的和 X _ 2 + … + X _ M X\_2+\ldots+X\_M X_2+…+X_M最小。
-
条件对于所有满足 1 ≤ i , j ≤ M 1 \leq i,j \leq M 1≤i,j≤M的一对 ( i , j ) (i,j) (i,j),如果 B _ i = A _ j B\_i=A\_j B_i=A_j和 T _ i ≤ S _ j T\_i \leq S\_j T_i≤S_j,那么 T _ i + X _ i ≤ S _ j + X _ j T\_i+X\_i \leq S\_j+X\_j T_i+X_i≤S_j+X_j。
- 换句话说,对于任何一对原本可以换乘的列车,即使将每列列车 i i i的出发和到达时间延迟 X _ i X\_i X_i,仍然可以换乘。
可以证明,满足这样条件的 ,且和 X _ 2 + … + X _ M X\_2+\ldots+X\_M X_2+…+X_M最小的序列 X _ 2 , … , X _ M X\_2,\ldots,X\_M X_2,…,X_M是唯一的。
分析:
我们需要知道所有列车的最早发车时间。那么 X [ i ] = X[i]= X[i]=开车时间 - 原始开车时间。所以我们将所有时间从小到大排序,遍历到的每一个出发时间,能赶上他的所有到达时间已经遍历过。那么这辆车的最早开车时间就是:所有能赶上他的车中,到达时间的最大值。这样就能得知所有的 X [ i ] X[i] X[i]。 最后就只需要记录每个车站目前的最晚到达时间即可。
代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
#define endl '\n'
#define PII pair<LL, LL>
const int N = 2e5 + 10;
const int INF = 2e9 + 5;
const int mod = 998244353;
int n, m, x;
LL a[N], b[N], s[N], t[N], delay[N], arrival[N];
struct event
{LL type, time, id;
} tmp[N << 1];int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int n, m, x;cin >> n >> m >> x;for (int i = 1; i <= m; i++){cin >> a[i] >> b[i] >> s[i] >> t[i];tmp[2 * i - 1] = {0, s[i], i};tmp[2 * i] = {1, t[i], i};}sort(tmp + 1, tmp + 2 * m + 1, [&](event a, event b){if (a.time == b.time) {return a.type > b.type;}return a.time < b.time; });delay[1] = x;for (int i = 1, stat; i <= 2 * m; i++){if (tmp[i].type == 0){stat = a[tmp[i].id];if (tmp[i].id != 1)delay[tmp[i].id] = max(0ll, arrival[stat] - tmp[i].time);}else{stat = b[tmp[i].id];arrival[stat] = max(arrival[stat], tmp[i].time + delay[tmp[i].id]);}}for (int i = 2; i <= m; i++)cout << delay[i] << " ";cout << endl;return 0;
}
F.Rearrange Query (博弈论)
题意:
给你一个由 N N N个正整数 A = ( A _ 1 , A _ 2 , … , A _ N ) A = (A\_1, A\_2, \dots ,A\_N) A=(A_1,A_2,…,A_N)组成的序列,其中每个元素至少是 2 2 2。安娜和布鲁诺用这些整数玩一个游戏。他们轮流执行以下操作,安娜先执行。
- 自由选择一个整数 i ( 1 ≤ i ≤ N ) i \ (1 \leq i \leq N) i (1≤i≤N)。然后,自由选择一个不是 A _ i A\_i A_i本身的 、 A _ i A\_i A_i的因数 x x x,并用 x x x代替 A _ i A\_i A_i。
不能进行操作的一方输,另一方赢。假设两位棋手都以最佳的方式行动,那么谁会获胜?
分析:
每个 A [ i ] A[i] A[i]可以操作的次数是 A [ i ] A[i] A[i]的质因子个数,设为 B [ i ] B[i] B[i],那么所有的 B [ i ] B[i] B[i]异或值不为 0 0 0时,则先手必胜;否则,则先手必败。如果异或和为 0 0 0,那么先手无论如何取数,后手都可以通过操作,使得异或和保持为 0 0 0,直到数列 A A A全为 0 0 0,先手不能取数,必败。
代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
#define endl '\n'
#define PII pair<LL, LL>
const int N = 2e5 + 10;
const int INF = 2e9 + 5;
const int mod = 998244353;
int len[N];
int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int n;cin >> n;for (int i = 1; i <= 1e5; i++){for (int j = i * 2; j <= 1e5; j += i)len[j] = max(len[j], len[i] + 1);}int flag = 0;for (int i = 0; i < n; i++){int x;cin >> x;flag ^= len[x];}if (flag == 0)cout << "Bruno" << endl;elsecout << "Anna" << endl;return 0;
}
s
赛后交流
在比赛结束后,会在交流群中给出比赛题解,同学们可以在赛后查看题解进行补题。
群号: 704572101,赛后大家可以一起交流做题思路,分享做题技巧,欢迎大家的加入。
相关文章:

AtCoder Beginner Contest 368
A.Cut(模拟) 题意: 有一叠 N N N张扑克牌,最上面的 i i i张扑克牌上写着一个整数 A _ i A\_i A_i。 你从牌堆底部取出 K K K张牌,将它们放在牌堆顶部,并保持它们的顺序。 操作后从上到下输出写在卡…...

WebGL系列教程六(纹理映射与立方体贴图)
目录 1 前言2 思考题3 纹理映射介绍4 怎么映射?5 开始绘制5.1 声明顶点着色器和片元着色器5.2 修改顶点的颜色为纹理坐标5.3 指定顶点位置和纹理坐标的值5.4 获取图片成功后进行绘制5.5 效果5.6 完整代码 6 总结 1 前言 上一讲我们讲了如何使用索引绘制彩色立方体&a…...

为什么nii.gz转.nrrd标签体积变大?
import SimpleITK as sitk # nii nii.gz nrrd格式之间互相转换 def nii2nii(oripath, savepath):data sitk.ReadImage(oripath)img sitk.GetArrayFromImage(data)out sitk.GetImageFromArray(img)sitk.WriteImage(out, savepath)if __name__ __main__:oripath 00292625.ni…...

软件安装攻略:EmEditor编辑器下载安装与使用
EmEditor是一款在Windows平台上运行的文字编辑程序。EmEditor以运作轻巧、敏捷而又功能强大、丰富著称,得到许多用户的好评。Windows内建的记事本程式由于功能太过单薄,所以有不少用户直接以EmEditor取代,emeditor是一个跨平台的文本编辑器&a…...

Redis的watch机制详解
WATCH 是 Redis 提供的一个用于实现 乐观锁 (Optimistic Lock) 的命令,通常用于实现事务中的并发控制。它允许客户端监控一个或多个键的变化,并确保事务(MULTI/EXEC)中执行的操作在这些键没有发生改变的情况下才能成功提交。若在事…...

UnrealEngine 打包Android平台应用
虚幻引擎 支持将项目发布到 安卓(Android) 移动设备上,并且提供了若干功能帮你将项目发布到 谷歌游戏商店。本节包含了如何设置Android开发环境、如何使用Android功能和服务、以及如何为发布游戏做准备相关的指南。 当前SDK要求 当前UE版本…...

Linux:git
hello,各位小伙伴,本篇文章跟大家一起学习《Linux:git》,感谢大家对我上一篇的支持,如有什么问题,还请多多指教 ! 如果本篇文章对你有帮助,还请各位点点赞!!&…...

electron有关mac构建
针对 Mac M1/2/3 芯片的设备,proces.archarm64. 执行下面命令,检查下按照的 node.js 版本是不是 intel x64 指令集,如果是的话安装下 arm64 指令集的 node.js终端中执行以下命令:node -p process.arch 对应的node版本也是arm版 …...

C语言-数据结构 弗洛伊德算法(Floyd)邻接矩阵存储
弗洛伊德算法相比迪杰斯特拉相似的地方都是遍历邻接矩阵不断调整最短路径的信息,并且两种算法面对多源最短路径的时间复杂度都是O(n^3),Floyd采用的是动态规划而Dijkstra是采用贪心的思想。在Floyd中我们将创建两个数组进行辅助,一个path二维…...

pyspark 安装记录
1、安装软件 1、python 3.10 2、hadoop-3.3.4 里面的winutils 要记得添加 3、java-17 4、spark-3.5.1-bin-hadoop3 python 安装 pyspark,Jupyter notebook pip install pyspark pip install jupyter notebook 2、添加环境变量 JAVA_HOME=C:\PySparkService\java-17H…...

高度可定制的电竞鼠标,雷柏VT1 PRO MAX体验
不管是菜鸟还是老鸟,游戏玩到某个阶段很容易出现瓶颈,在游戏的某个阶段,这里面制约最大的除了操作之外,实际上还是我们用的硬件。比如在PC游戏中,鼠标的影响就非常大,像是在游戏中如果鼠标延迟过高…...

经验笔记:SOA(面向服务的架构)
SOA(面向服务的架构)经验笔记 引言 SOA(Service-Oriented Architecture, 面向服务的架构)是一种设计原则,用于构建灵活且可扩展的分布式系统。SOA强调将应用程序的不同功能封装为独立的服务,这些服务通过…...

triton之ttir学习
一 基本语句 1 常量 %cst arith.constant dense<520192> : tensor<4096xi32> %c127_i32 arith.constant 127 : i32 %cst arith.constant dense<520192> : tensor<4096xi32> 解释:这条语句定义了一个名为 %cst 的常量,它…...

如何在AWS账户上进行充值:一份详尽指南
大家好,小编今天给大家带来一份关于如何在AWS账户上进行充值的详尽指南。对于使用AWS服务的用户来说,保持账户余额充足是确保服务不中断的关键。下面,九河云将详细讲解具体的操作步骤。 步骤一:登录AWS管理控制台 首先ÿ…...

(六十四)第 10 章 内部排序(静态链表的插入排序)
示例代码 staticLinkList.h // 静态链表的插入排序实现头文件#ifndef STATIC_LINK_LIST_H #define STATIC_LINK_LIST_H#include "errorRecord.h"#define SIZE 100 #define NUM 8typedef int InfoType; typedef int KeyType;typedef struct {KeyType key;InfoType inf…...

appium历史版本地址链接
appium / Appium.app / Downloads — Bitbucket ios的appium界面图 链接: https://pan.baidu.com/s/1i8BRaZgQA3ImLUhKZjfhiA 提取码: 5c8b...

TCPIP网络编程(尹圣雨)UDP 轮流收发消息(windows)
端口号写的是 2345 客户端 #include <iostream> #include <winsock2.h> #pragma comment(lib, "ws2_32.lib")using std::cout; using std::endl; using std::cin;int main() {WSADATA wsa;if (WSAStartup(MAKEWORD(2, 2), &wsa) ! 0){cout <<…...

【相机方案(2)】V4L2 支持相机图像直接进入GPU内存吗?DeepStream 确实可以将图像数据高效地放入GPU内存进行处理!
V4L2 支持相机图像直接进入GPU内存吗? V4L2(Video4Linux Two)是Linux内核中用于视频捕获和播放的API,它本身并不直接支持将相机捕获的图像数据直接拷贝到GPU内存而不经过CPU内存。V4L2主要关注于视频设备的控制、数据的捕获和播放…...

UEFI——PEI阶段
一、PEI介绍 Pre-EFI Initialization(PEI)在引导的早期被调用,仅利用CPU资源调用PEIM,这些PEIM负责: (1)初始化一些永久内存 (2)在HOBs中描述内存信息 (3…...

Nacos下载和启动
Nacos是什么? 一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台 下载 https://github.com/alibaba/nacos/releases/tag/2.1.1启动 将下载好的Nacos解压缩,然后到bin目录下打开cmd 输入指令:startup.cmd -m standalone 出…...

怎么选择适合的服务器
大家都知道,不管是公司还是个人,在数字化浪潮已经席卷全球的环境下,大家对服务器的需求是日渐增长的。很多人在买服务器的时候,多少都有点选择困难,今天我们就来对比下物理服务器和弹性云服务器,看看选哪个…...

通义千问大模型Java调用,百炼
文章目录 一、大模型服务平台[百炼](https://help.aliyun.com/zh/model-studio/getting-started)二、Java sdk调用与eventStream三、百炼平台其它 一、大模型服务平台百炼 百炼是阿里新出的一个大模型服务平台,聚合了多个千问大模型及其它一些大模型的调用…...

新发现!一键管理所有远程会话的神器——1Remote
大家好,今天给大家介绍一款非常实用的工具——1Remote,这是一款现代化的个人远程会话管理器与启动器,让您的远程工作变得更加轻松高效! 项目介绍 🚀 核心功能概览 多协议支持:1Remote支持RDP、SSH、VNC、…...

华为 HCIP 认证费用和报名资格
在当今竞争激烈的信息技术领域,华为 HCIP认证备受关注。它不仅能提升个人的技术实力与职业竞争力,也为企业选拔优秀人才提供了重要依据。以下将详细介绍华为 HCIP 认证的费用和报名资格。 一、HCIP 认证费用 华为HCIP认证的费用主要由考试费和培训费构成…...

Linux下载压缩包:tar.gz、zip、tar.bz2格式全攻略
在 Linux 中,下载各种格式的压缩包(如 .tar.gz、.zip、.tar.bz2 等)通常使用命令行工具如 wget 和 curl。 1. 使用 wget 下载压缩包 wget 是 Linux 中最常用的文件下载工具,支持 HTTP、HTTPS、FTP 等协议,可以直接从…...

运行PaddleOCR报错:requests.exceptions.SSLError: HTTPSconnectionPool……
文章目录 问题描述解决方法 问题描述 在运行以下代码时报错: ocr PaddleOCR(lang"en")解决方法 打开cmd,输入以下命令,查找Python解释器所在路径。 找到 Lib\site-packages\paddleocr\ppocr\utils\network.py,将代码…...

基于STM32L431小熊派设计的智能花盆(微信小程序+腾讯云IOT)(223)
文章目录 一、前言1.1 项目介绍【1】项目背景【2】设计实现的功能【3】项目硬件模块组成1.2 设计思路【1】整体设计思路【2】ESP8266工作模式配置1.3 项目开发背景【1】选题的意义【2】可行性分析【3】参考文献1.4 开发工具的选择【1】设备端开发【2】上位机开发1.5 系统框架图…...

CentOS 入门必备基础知识
CentOS(Community ENTerprise Operating System)是一个基于Red Hat Enterprise Linux(RHEL)的免费开源操作系统,广泛用于服务器环境。它以其稳定性、安全性和社区支持而闻名,对于初学者来说掌握一些基础知识…...

快速排序
一:基本思想 任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右 子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元…...

钢琴灯有必要买很贵的吗?五款值得入手的护眼灯分享
钢琴灯有必要买很贵的吗?首先在这里先回答一下众多家长们提出问题,护眼灯钢琴灯并不是越贵越好!护眼灯钢琴灯这种比较大的电器虽然在生产中的用材用料存在一定的成本,但是并不是价格越贵的会越好,价格并不是决定产品质…...