AtCoder Beginner Contest 384 Solution

news/2024/12/15 15:56:18/文章来源:https://www.cnblogs.com/NightRaven/p/18608072

A - aaaadaa (abc384 A)

题目大意

给个长度为n的字符串,以及两个字母a和b,要求把字符串中不是a的字符全部都变成b。

解题思路

一个循环判断一下就行了。

代码

#include<bits/stdc++.h>
using namespace std;
int main()
{int n;char a, b;cin >> n >> a >> b;string s;cin >> s;for (int i = 0; i < n; i++){if (s[i] != a) s[i] = b;}cout << s;return 0;
}

B - ARC Division (abc384 B)

题目大意

有两种比赛,div1在1600-2799的范围内计算入rating,div2在1200-2399的范围内计算入rating,给定n场比赛,告诉你每场比赛是div几,并且给定这场比赛后变化的分数,如果当前分数在计入rating的范围内,就会产生这个变化,否则什么都不会发生,求最后的rating

解题思路

按照题意模拟即可。

代码

#include<bits/stdc++.h>
#define rep(i,n) for(int i=0;i<n;i++)
#define all(v) v.begin(),v.end()
#define vi vector<int>
#define ll long long
using namespace std;
int main()
{int n, r;cin >> n >> r;while (n--) {int d, a;cin >> d >> a;if (d == 1 && r >= 1600 && r <= 2799) r += a;else if (d == 2 && r >= 1200 && r <= 2399) r += a;}cout << r;return 0;
}

C - Perfect Standings (abc384 C)

题目大意

给定五道题的分数,一共有31个人,他们分别做出了A,B,C,D,E,AB,AC,AD...ABCDE,总之就是每个人都做出题了,并且每个人做出的题目序列都不一样,请你把这31个人的分数排序,如果分数相同,按字母小的靠前。

解题思路

01穷举,统计一下分数就行。

代码

#include<bits/stdc++.h>
#define rep(i,n) for(int i=0;i<n;i++)
#define all(v) v.begin(),v.end()
#define vi vector<int>
#define ll long long
using namespace std;
int main()
{int c[10];rep(i, 5) cin >> c[i];pair<int, string> a[50];int k = 0;for (int i = 0;i < (1 << 5);i++) {string t = "";int p = 0;for (int j = 0;j < 5;j++) {if (i & (1 << j)) {t += char('A' + j);//当前人做出的题目字符串p += c[j];}}a[k++] = { -1 * p,t };//按分数从大到小,字符串字母序从小到大}sort(a, a + k);rep(i, k) cout << a[i].second << endl;return 0;
}

D - Repeated Sequence (abc384 D)

题目大意

给定一个数组,由这个数组不断循环可以得到一个无限长的数组,问这个数组当中有没有连续一段的和为S。

解题思路

一段连续串是由一段后缀,几段数组重复,一段前缀三个部分构成,那么我们把所有的后缀和放进一个set里,然后从前往后循环,用s减去前缀和,模数组总和,看剩下的是否在后缀和里出现过即可。

代码

#include<bits/stdc++.h>
#define rep(i,n) for(int i=0;i<n;i++)
#define all(v) v.begin(),v.end()
#define vi vector<int>
#define ll long long
using namespace std;
int n;
ll s;
ll a[200005];
int main()
{cin >> n >> s;ll sum = 0;set <ll> ss;rep(i, n) {cin >> a[i];sum += a[i];ss.insert(sum);}ss.insert(0);ll t = 0;for (int i = n - 1;i >= 0;i--) {if (ss.count((s - t) % sum)) {cout << "Yes";return 0;}t += a[i];}if (ss.count((s - t) % sum)) {cout << "Yes";return 0;}cout << "No";return 0;
}

E - Takahashi is Slime 2 (abc384 E)

题目大意

给定一个二维平面地图,每个位置都是一个史莱姆,每个史莱姆都有一个数值。

takahashi一开始在P,Q的位置,他可以吞并附近的,小于他当前数值1/X的史莱姆,并把它的数值加到自己头上,问他最后最大数值能到多少。

image-1

image-2

解题思路

很好的优先队列题,用优先队列进行BFS,按照数值排序,每次看队头能不能吞并,如果能吞并就吞,并且把这个吞并的史莱姆的新的邻近格压进队列。

代码

#include<bits/stdc++.h>
#define rep(i,n) for(int i=0;i<n;i++)
#define all(v) v.begin(),v.end()
#define vi vector<int>
#define ll long long
using namespace std;
ll a[505][505];
bool vis[505][505];
const int dx[4] = { 1, 0, -1, 0 };
const int dy[4] = { 0, 1, 0, -1 };
ll k;
bool sless(ll x, ll y) {if (x % k == 0) return y < (x / k);else return y <= (x / k);
}
int main()
{int h, w;cin >> h >> w >> k;int x, y;cin >> x >> y;x--;y--;int sx = x, sy = y;priority_queue<pair<ll, pair<int, int> >, vector<pair<ll, pair<int, int> > >, greater<pair<ll, pair<int, int> > >> q;rep(i, h) rep(j, w) {cin >> a[i][j];}ll ans = 0;q.push({ ans,{ x, y } });vis[x][y] = 1;while (!q.empty()) {x = q.top().second.first;y = q.top().second.second;ll t = q.top().first;q.pop();if ((x == sx && y == sy) || sless(ans, a[x][y])) {// cout << ans << " " << t << " " << x << " " << y << endl;ans += a[x][y];rep(i, 4) {int nx = x + dx[i];int ny = y + dy[i];if (nx < 0 || nx >= h || ny < 0 || ny >= w || vis[nx][ny]) continue;vis[nx][ny] = 1;q.push({ a[nx][ny],{ nx,ny } });}}}cout << ans << endl;return 0;
}

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

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

相关文章

vs编译cpp时设置排除项

cpp编译排除 一个c++文件不需要被编译但还保留在工程中(阅读),可使用ExcludedFromBuild,有两种方法实现:图形化操作 改vs的项目配置文件图形化操作 在vs的资源管理器选中文件 - 右键 - 属性 - 切到当前的编译配置项(debug/release),有个选项【从生成中排除】,选择为是…

纪念程云大侠

与程云兄的缘份,起始于Delphi大富翁论坛,因 “程云的一堆SQL”而结缘,在论坛发起的第二次(玉渊潭)和第三次(香山)大富翁聚会中逐渐相熟。自2002年5月3日那场坛友初聚起,加上中间各种小聚,至近年来的4年多共事时光,不经意间,二十余载岁月已悄然流逝,往昔匆匆,仿若弹…

css第三天案例练习

案例一:新闻详情 字体颜色:color 字体大小:font-size 段落开头空两行:font-indent:2em 水平居中:图片(出错点)/文字text-align:center 字体粗细:font-weight:400(取消加粗)案例二:css简介 超链接设置格式

DVR4 pg walkthrough Intermediate window

nmap ┌──(root㉿kali)-[~/lab] └─# nmap -p- -A -sS 192.168.219.179 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-15 04:22 UTC Stats: 0:00:22 elapsed; 0 hosts completed (1 up), 1 undergoing SYN Stealth Scan SYN Stealth Scan Timing: About 34.76% d…

计算机网络课程笔记

计算机网络课程 该笔记于 2024年12月15日15:14:02 编写 常用命令以及简写完整命令 简写形式 解释configure terminal conf t 进入全局配置模式enable en enableexit ex 退出当前模式hostname host 重启设备interface int 进入接口配置模式shutdown shut 禁用接口no shutdown no…

监测预警智能分析中心建设项目方案

随着科技的不断进步,地理信息与遥感技术在国家治理、环境保护、灾害预警等领域发挥着越来越重要的作用。监测预警智能分析中心的建设,旨在通过集成先进的遥感技术、地理信息系统(GIS)、大数据分析和人工智能(AI)技术,实现对环境变化、灾害风险的实时监测和智能预警。本文…

2024-2025-1 20241421《计算机基础与程序设计》第十二周学习总结

这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计 这个作业要求在哪里 2024-2025-1计算机基础与程序设计第十二周作业 这个作业的目标 复习巩固前面所学的内容 作业正文 https://www.cnblogs.com/118qa/p/18608015 教材学习内容总结 一、文件的基本概念 文件是存储在外…

Three.js案例-360全景房看

在 360 看房功能中,我们需要在浏览器中创建一个类似虚拟现实的场景,使得用户能够查看环境的每一个角落。这一功能的实现本质上是利用 球体映射技术,即通过将全景图作为纹理贴图映射到一个反向的球体上,用户可以通过旋转视角来“环顾四周”。 我们先来看一下效果 ![file](Ma…

性能测试-内存溢出时的分析工具使用

下载内存分析工具地址:https://eclipse.dev/mat/downloads.phphp)下载对应的版本,我这里使用的windows的就下载windows版本的包,下载完成后解压配置启动时的jdk的依赖,目前1.15.0版本的需要jdk17以上,我们在启动时需要手工修改MemoryAnalyzer.ini文件,添加指定的jdk的本地…

性能测试-jvm监控工具jivsualvm

官方网站下载:https://visualvm.github.io/download.html下载zip文件解压到本地后,需要修改启动对应的系统环境的jdk的地址,visualvm_2110\etc 的目录下的 visualvm.conf 文件,配置当前环境的jdkhome后保存visualvm_2110\bin目录下,点击 visualvm.exe 启动程序安装GC插件 …

鲜花:16。

又老了一岁了。 一下子就沧桑了许多。“低沉-狂喜-低沉-狂喜”的循环往复,终究是走向疯癫。 接连三次的挫败,几乎毁了我的一切。 终究是自己不够成熟导致的。 生日,很想哭。 失败,会更多。

性能测试-jvm监控工具jconsole

在jdk的bin目录下,运行jconsole.exe 程序可以打开工具在使用 java 命令启动服务时 添加如下参数 -Dcom.sun.management.jmxremote # 启用 jmx -Djava.rmi.server.hostname=10.0.0.100 # 运行的服务器ip -Dcom.sun.management.jmxremo…