AtCoder Beginner Contest 335 A-E 题解

ABC335B - Tetrahedral Number 【代码】ABC335B - Tetrahedral Number。 阅读详情

比赛链接:https://atcoder.jp/contests/abc335/
比赛时间:2024 年 1 月 6 日 20:00-21:40

A题:2023

标签:字符串
题意:给定一个字符串,把最后一个字符串改成 4 4 4输出。
题解:字符串最后一个字符更改输出。
代码:

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

int main() {
    string s;
    cin >> s;
    s[s.size() - 1] = '4';
    cout << s << endl;
    return 0;
}

B题:Tetrahedral Number

标签:枚举
题意:给定一个整数 N N N,升序输出所有 x + y + z ≤ N x+y+z≤N x+y+z≤N的非负整数 ( x , y , z ) (x,y,z) (x,y,z)三元组。 ( 0 < = n < = 21 ) (0<=n<=21) (0<=n<=21)
题解:按题目要求循环输出。
代码:

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

int main() {
    int n;
    cin >> n;
    for (int i = 0; i <= n; i++)
    for (int j = 0; j <= n; j++)
    for (int k = 0; k <= n; k++) {
        if (i + j + k <= n) {
            cout << i << " " << j << " " << k << endl;
        }
    }
    return 0;
}

C题:Loong Tracking

标签:思维、模拟
题意:平面坐标系上给定 N N N个点,编号为 1 1 1到 N N N,第 i i i个部分位于坐标 ( i , 0 ) (i,0) (i,0)处。进行 Q Q Q次操作,操作分为以下两种:
1 1 1 C C C:将头部朝 C C C方向移动 1 1 1, C C C是 R 、 L 、 U R、L、U R、L、U和 D D D中的一个,分别表示平面坐标系上的 x x x轴正方向、 x x x轴负方向、 y y y轴正方向、 y y y轴负方向。头部移动,其他部分也会跟着移动(类似贪吃蛇)。
2 2 2 p p p:找出原来第 p p p个部分现在的坐标。
( 2 < = N < = 1 0 6 , 1 < = Q < = 2 ∗ 1 0 5 ) (2<=N<=10^6, 1<=Q<=2*10^5) (2<=N<=106,1<=Q<=2∗105)
题解:把头部每次移动的坐标存一下,当头部第二次移动的时候,那原来第一次移动的位置就给了第二部分,以此类推,后面移动的时候都是紧跟着的。求第 p p p个部分的时候 分两种情况,一种是已经走上了头部走过的路,根据现在 头部移动的次数 c n t cnt cnt,那么第 p p p个部分是刚走到 c n t − p + 1 cnt-p+1 cnt−p+1之前头部走到的位置;一种是还在 y = 0 y=0 y=0的地方,根据现在 头部移动的次数 c n t cnt cnt,那第 p p p个部分往左移动到 ( p − c n t , 0 ) (p-cnt,0) (p−cnt,0)坐标。
代码:

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

typedef long long ll;
ll n, q, op, p, cnt = 0;
ll x[200005], y[200005];

int main() {
    char c;
    x[0] = 1; y[0] = 0;
    cin >> n >> q;
    for (int i = 1; i <= q; i++) {
        cin >> op;
        if (op == 1) {
            cin >> c;
            cnt++;
            x[cnt] = x[cnt - 1]; y[cnt] = y[cnt - 1];
            if (c == 'U') y[cnt]++;
            if (c == 'D') y[cnt]--;
            if (c == 'L') x[cnt]--;
            if (c == 'R') x[cnt]++;
        }
        else {
            cin >> p;
            if (p <= cnt) cout << x[cnt - p + 1] << " " << y[cnt - p + 1] << endl;
            else {
                cout << p - cnt << " " << 0 << endl;
            }
        }
    }
    return 0;
}

D题:Loong and Takahashi

标签:模拟
题意:给定奇数 n n n,完成蛇形填数。 ( n < = 45 ) (n<=45) (n<=45)
举个例子: n = 5 n=5 n=5

1 2 3 4 5
16 17 18 19 6
15 24 T 20 7
14 23 22 21 8
13 12 11 10 9

题解:蛇形填数 经典题,最中间改成 T T T。轮流往四个方向填数,跑到边界或者已经填过数的位置停止。
代码:

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

int a[55][55];

int main() {
    int n, c = 1, x = 0, y = 0;
    cin >> n;
    a[0][0] = 1;
    while (c < n * n) {
        while (y + 1 < n && !a[x][y + 1]) a[x][++y] = ++c; // 右
        while (x + 1 < n && !a[x + 1][y]) a[++x][y] = ++c; // 下
        while (y - 1 >= 0 && !a[x][y - 1]) a[x][--y] = ++c; // 左
        while (x - 1 >= 0 && !a[x - 1][y]) a[--x][y] = ++c; // 上
    }

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            if (i == n / 2 && j == n / 2) {
                cout << "T ";
                continue;
            }
            cout << a[i][j] << " ";
        }
        cout << endl;
    }
    return 0;
}

E题:Non-Decreasing Colorful Path

标签:最短路、 d i j k s t r a dijkstra dijkstra
题意:给定一个 n n n个顶点和 m m m条边的无向图,每个顶点上有分数 a i a_i ai​,求从顶点 1 1 1到顶点 n n n得分最高的路径。得分是路径中顶点分数不同的顶点数目,要保证路径上的顶点分数是不递减的(包含等于)
比如路径上顶点的分数分别为 10 10 10 20 20 20 20 20 20 30 30 30 40 40 40=> 那么得分为 4 4 4
题解:比较典型的 d i j k s t r a dijkstra dijkstra的变型题(加上约束条件),因为题目要求不递减,堆优化部分可以按每个顶点的分数从小到大排序,松弛部分操作的时候 保证是从低分数的顶点到高分数(相等也进入更新)的顶点,跑最长路;需要注意处理等于的时候,得分是顶点中分数不同的顶点数目。
代码:

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

typedef long long ll;
ll a[200005], d[200005];
vector<ll> e[200005];
priority_queue< pair<ll, ll> > q;

int main() {
    ll n, m;
    cin >> n >> m;
    for (int i = 1; i <= n; i++) cin >> a[i];
    for (int i = 1; i <= m; i++) {
        ll u, v;
        cin >> u >> v;
        e[u].push_back(v);
        e[v].push_back(u);
    }

    d[1] = 1;
    q.push(make_pair(-a[1], 1));

    while (!q.empty()) {
        int u = q.top().second;
        q.pop();
        for (auto v: e[u]) {
            if (a[v] >= a[u]) {
                if (d[v] < d[u] + (a[v] != a[u])) {
                    d[v] = d[u] + (a[v] != a[u]);
                    q.push(make_pair(-a[v], v));
                }
            }
        }
    }

    cout << d[n];
    return 0;
}
ABC335C - Loong Tracking 【代码】ABC335C - Loong Tracking。 阅读详情

相关推荐

AC修炼计划(AtCoder Beginner Contest 335)E-F

A,B,C,D还算比较基础,没有什么思路,纯暴力就可以过。这里来总结一下E和F。

kyrietheshy的博客 668

AtCoder Beginner Contest 335 B题 Tetrahedral Number

AtCoder Beginner Contest 335 B题 Tetrahedral Number

超哥聊信奥 960

SAP后台JOB保姆级教程:从SM36创建到SM37监控,手把手教你搞定ABAP程序定时任务

本文详细解析SAP后台JOB从创建到监控的全流程,重点介绍SM36创建和SM37监控的操作步骤与最佳实践。通过真实案例演示如何配置定时任务、处理常见故障及实施企业级管理策略,帮助ABAP开发者高效管理后台程序执行。

weixin_30838873的博客 430

Atcoder Beginner Contest 335 (A - F 题)

Atcoder Beginner Contest 335 的A到F题讲解

Edward Shi的博客 1576

从UART到RS485:手把手教你用SIT3485E收发器搞定工业级通信(含原理图与PCB布局要点)

本文详细解析了从UART到RS485的工业级通信转换,重点介绍了SIT3485E收发器的原理图设计、PCB布局要点及抗干扰技巧。通过差分信号传输和优化电路设计,实现长距离、多设备稳定通信,适用于工业自动化等复杂环境。

weixin_29169505的博客 345

Minitab田口设计实战:如何用正交试验优化遗传算法参数(附完整操作步骤)

本文详细介绍了如何利用Minitab田口设计进行遗传算法参数优化,通过正交试验方法显著提升效率。文章涵盖实验设计、Minitab操作步骤、结果分析及高级技巧,帮助工程师快速掌握这一工业级优化技术,实现算法性能的显著提升。

wind6的博客 863

AtCoder Beginner Contest 335

AtCoder Beginner Contest 335

青少年趣味编程 1123

MagicDraw-用例图

MagicDraw-用例图

木头征的博客 3129

AtCoder Beginner Contest 301

AtCoder Beginner Contest 301

青少年趣味编程 1576

4、LTE无人机认证:保障通信安全的新方案

本文针对LTE网络中无人机通信存在的安全风险,提出了一种基于可信第三方GCS的新型认证协议。该协议通过非对称加密和哈希函数保护IMSI等敏感信息,防止身份泄露、中间人攻击、拒绝服务攻击和位置追踪等威胁。利用Scyther工具对协议进行形式化分析,验证了其在机密性、一致性和活性等方面的安全属性,证明该方案能有效提升无人机在LTE网络中的通信安全性与隐私保护能力。

pink的博客 60

YOLOv9分割改进 ,YOLOv9分割改进主干网络为华为EfficientNet,助力涨点

EfficientNet论文中研究了卷积网络的缩放和,并证明对深度,宽度和分辨率复合缩放的重要性,因此精度和效率更好。为了阐述相关的原理,我们提出了简单有效的复合缩放方法,使得模型缩放具有一定设计准则,同时兼顾了模型的效率。我下文将 YOLOv9 分割模型改进主干网络为 EfficientNet 融合网络结构。论文地址代码地址下文都是手把手教程,跟着操作即可添加成功把环境配置好,数据集处理好,训练基本能成功,创作不易,请帮忙点一个爱心,关注我,带你不挂科!

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 937

AtCoder Beginner Contest 382

AtCoder Beginner Contest 382

青少年趣味编程 1995

ESP32与DS18B20温度传感器的数据采集与告警系统

并且,通过自定义的微信告警功能,我们可以及时收到温度超过阈值的告警消息。随着物联网的快速发展,传感器在各种应用场景中发挥着重要的作用。本文将介绍如何使用ESP32微控制器与DS18B20温度传感器结合,通过串口输出和Web服务器实现温度数据的采集和监控,并使用自定义微信告警功能。上传完成后,打开串口监视器,您将看到ESP32连接到Wi-Fi网络,并开始监测温度。在您的计算机或移动设备上,打开一个Web浏览器,并输入ESP32的IP地址。在浏览器中输入ESP32的IP地址后,您将看到显示当前温度的页面。

loop_class349的博客 2242

Atcoder Beginner Contest 289

Atcoder Beginner Contest 289

青少年趣味编程 1614

机器人轨迹规划——三次样条轨迹1(基于速度的求解方法)

三次样条轨迹是利用三次样条曲线来对给定的一系列点进行插值,从而得到一个光滑的轨迹。三次样条因为每段的多项式次数最高都是三阶的,所以可以得到2阶导数连续,也就是加速度连续的轨迹。假设给定了一系列的点q0q1q2qnq0​q1​q2​...qn​,以及每个点对应的参数t0t1t2tnt0​t1​t2​...tn​,计算一条三次样条曲线sts(t)st,该曲线通过给定的点q0q1q2qnq0​q1。

出门搔白首,若负平生志 1469

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

AtCoder Beginner Contest 329

AtCoder Beginner Contest 329

青少年趣味编程 973

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

AtCoder Beginner Contest 275

AtCoder Beginner Contest 275

青少年趣味编程 827

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

AtCoder Beginner Contest 325

AtCoder Beginner Contest 325

青少年趣味编程 1095

AtCoder Beginner Contest 321

AtCoder Beginner Contest 321

青少年趣味编程 1232

AtCoder Beginner Contest 246

AtCoder Beginner Contest 246

青少年趣味编程 1200

AtCoder Beginner Contest 399

AtCoder Beginner Contest 399

青少年趣味编程 957

AtCoder Beginner Contest 330

AtCoder Beginner Contest 330

青少年趣味编程 1039

AtCoder Beginner Contest 400

AtCoder Beginner Contest 400

青少年趣味编程 595

AtCoder Beginner Contest 322

AtCoder Beginner Contest 322

青少年趣味编程 737

AtCoder Beginner Contest 283

AtCoder Beginner Contest 283

青少年趣味编程 690

AtCoder Beginner Contest 392

AtCoder Beginner Contest 392

青少年趣味编程 822
上一篇: AtCoder Beginner Contest 336 A-E 题解
下一篇: 上海计算机学会12月月赛 丙组题解
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值