AtCoder Beginner Contest 361)

news/2024/10/6 3:36:44/文章来源:https://www.cnblogs.com/yxcblogs/p/18288185

推荐个C++编程仓库模板

https://github.com/yxc-s/programming-template

A - Insert

void solve() {int n, k, x;cin >> n >> k >> x;vector<int> a(n);for (auto& x : a){cin >> x;}a.insert(a.begin() + k, x);for (int i = 0; i < a.size(); ++i){cout << a[i] << " \n"[i == n];}
}

B Intersection of Cuboids

题意:给定空间中2个立方体,每个立方体用两个三维的对角线坐标表示。问两个立方体是否相交。

思路:只要在任意一个维度上,某个立方体的终点<=另一个立方体的起点,则无解。

总结:一开始只考虑了一个立方体的每个维度上都在另一个立方体内部的情况,其实3个维度,不管哪个立方体满足条件都可以。

void solve() {vector<array<int, 6>> a(2);for (int i = 0; i < 2; ++i){for (auto& x : a[i]){cin >> x;}}for (int i = 0; i < 3; ++i){if (a[0][i + 3] <= a[1][i] || a[1][i + 3] <= a[0][i]){cout << "No\n";return;}}cout << "Yes\n";
}

C - Make Them Narrow

题意:给定一个序列,删除k个数后,让序列中最大与最小值的差最小。

思路:排序后,检查长度为(n - k)的滑动窗口中最左最右元素的差值最小值。

总结:一开始以为,以为要删除k个数,让序列组成的数最小和最大,然后求他们的差值,使用了一个next数组,数组中表示当前位置的下一个数[1~9]所在的位置是多少,依次检查当前的数最有可能变成的数需要删除多少个元素。。最后准备测试了发现读错题了。。

void solve() {int n, k;cin >> n >> k;vector<int> a(n);for (auto& x : a){cin >> x;}sort(a.begin(), a.end());int t = n - k - 1;int ans = INF;for (int i = 0; i + t < n; ++i){ans = min(ans, a[i + t] - a[i]);}cout << ans << endl;
}

D - Go Stone Puzzle

题意:搜索问题

思路:直接搜就行

总结:不知道为什么双向bfs没过,但是单向bfs过了??

void solve() {int n;string s, t;cin >> n >> s >> t;if (count(s.begin(), s.end(), 'W') != count(t.begin(), t.end(), 'W')){cout << "-1\n";return;}if (s == t){cout << "0\n";return;}s += "..";t += "..";unordered_set<string> sett{s};unordered_set<string> sett_r{t};auto bfs = [&](){queue<pair<string, int>> q;queue<pair<string, int>> qr;q.emplace(s, 0);qr.emplace(t, 0);while (!q.empty() || !qr.empty()){int step = q.front().second;while (!q.empty() && q.front().second <= step){auto[cur, cnt] = q.front();q.pop();int p = cur.find('.');for (int i = 0; i < n + 1; ++i){if (abs(i - p) <= 1){continue;}string tt = cur;swap(tt[i], tt[p]);swap(tt[i + 1], tt[p + 1]);#if defined(double_search)if (sett_r.count(tt)){cout << 2 * cnt + 1 << '\n';return true;}#elseif (tt == t){cout << cnt + 1<< '\n';return true;}#endifif (!sett.count(tt)){sett.insert(tt);q.emplace(tt, cnt + 1);}}}#if defined(double_search)while (!qr.empty() && qr.front().second <= step){auto [cur, cnt] = qr.front();qr.pop();int p = cur.find('.');for (int i = 0; i < n + 1; ++i){if (abs(i - p) <= 1){continue;}string tt = cur;swap(tt[i], tt[p]);swap(tt[i + 1], tt[p + 1]);if (sett.count(tt)){cout << 2 * cnt + 2 << '\n';return true;}if (!sett_r.count(tt)){sett_r.insert(tt);qr.emplace(tt, cnt + 1);}}}#endif}return false;};if (!bfs()){cout << "-1\n";}
}

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

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

相关文章

Qt/C++音视频开发78-获取本地摄像头支持的分辨率/帧率/格式等信息/mjpeg/yuyv/h264

一、前言 上一篇文章讲到用ffmpeg命令方式执行打印到日志输出,可以拿到本地摄像头设备信息,顺藤摸瓜,发现可以通过执行 ffmpeg -f dshow -list_options true -i video="Webcam" 命令获取指定摄像头设备的分辨率帧率格式等信息,会有很多条。那为什么需要这个功能呢…

Lazarus的安装

推荐安装秋风绿色版lazarus,秋风的blog上有绿色版百度网盘的下载地址,对于没有VIP会员的可以去QQ群下载,群号:103341107,速度比网盘好些 下载完成后,推荐解压到非系统盘根目录,在根目录里找到“lazarus绿化工具-x86_64-win64.exe”并运行。上图的路径是你的程序所在目录…

关于电源的基础知识

基础知识很多时候,都没有直接的作用。但是不积跬步无以至千里,不积小流无以成江海。接下来就用一页笔记,简单说明一下不理想源的输出阻抗。在一个电路系统中,前级和后级的连接,大多需要计算输入输出阻抗的。

Denso Create Programming Contest 2024(AtCoder Beginner Contest 361)

Denso Create Programming Contest 2024(AtCoder Beginner Contest 361)\(A\) Insert \(AC\)循环结构。点击查看代码 int a[200]; int main() {int n,k,x,i;cin>>n>>k>>x;for(i=1;i<=n;i++){cin>>a[i];cout<<a[i]<<" ";i…

浅谈进程隐藏技术

在之前几篇文章已经学习了解了几种钩取的方法,这篇文章就利用钩取方式完成进程隐藏的效果。在实现进程隐藏时,首先需要明确遍历进程的方法。前言 在之前几篇文章已经学习了解了几种钩取的方法 ● 浅谈调试模式钩取 ● 浅谈热补丁 ● 浅谈内联钩取原理与实现 ● 导入地址表钩取…

什么是新质生产力

什么是新质生产力

好消息!数据库管理神器 Navicat 推出免费精简版:Navicat Premium Lite

前言 好消息,前不久Navicat推出了免费精简版的数据库管理工具Navicat Premium Lite,可用于商业和非商业目的,我们再也不需要付费、找破解版或者找其他免费平替工具了,有需要的同学可以马上下载使用起来。 工具官方介绍 Navicat Premium Lite 是 Navicat 的精简版,它包含了…

读人工智能全传05专家系统

读人工智能全传05专家系统1. 知识就是力量 1.1. 人工智能领域此前存在的问题是过度关注搜索和解决问题这种通用法则 1.2. “弱”方法缺少一个关键的要素,而这一要素才是在所有智能行为中起决定性作用的组成部分:知识 1.3. 一种基于知识的人工智能系统:专家系统开始出现,它能…

副本集要点

oplog 中的每个操作都是幂等的。也就是说,无论对目标数据集应用一次还是多次,oplog 操作都会产生相同的结果。 Oplog大小当您第一次启动副本集成员时,如果您未指定 oplog 大小,MongoDB 将创建默认大小的 oplog。默认 oplog 大小取决于存储引擎: 存储引擎默认 Oplog 大小Wi…

副本集

MongoDB 中的副本集是一组mongod提供冗余和高可用性的进程。副本集的成员包括: 主服务器接收所有写操作。 主节点是副本集中唯一接收写入操作的成员。MongoDB 在主节点上应用写入操作,然后将操作记录在主节点的oplog上。辅助成员复制此日志并将操作应用于其数据集。副本集的所…

06.函数

Go 语言中的函数是代码组织和复用的基础,函数的定义和调用非常简单明了。下面是 Go 语言中函数的基础语法和一些关键概念: 函数的定义 在 Go 语言中,函数的定义包括函数名、参数列表、返回值类型和函数体。语法格式如下:func 函数名(参数列表) 返回值类型 {函数体 } 示例 下…

第一周学习总结

暑假第一周,经过短暂的调整,我进入到了Java语言的学习中。通过这一周的学习,在《疯狂Java讲义》与B站黑马程序员课程的帮助下,我初步了解了Java这门编程语言。以下是我对这周学习的总结: 1.学习使用CMD 学会了使用Win+R输入cmd打开CMD窗口,学习了一些常见CMD指令(如dir,…