AtCoder Beginner Contest 343 A~F

A.Wrong Answer(模拟)

题意:

给你两个整数 A A A B B B,它们介于 0 0 0 9 9 9之间。

输出任何一个介于 0 0 0 9 9 9之间且不等于 A + B A+B A+B的整数。

分析:

按题意判断并输出一个整数即可。

代码:

#include<bits/stdc++.h>using namespace std;int main() {int a, b;cin >> a >> b;for (int i = 0; i < 10; i++) {if (i != a + b) {cout << i << endl;break;}}return 0;
}

B.Adjacency Matrix(模拟)

题意:

有一个简单的无向图 G G G,其中有 N N N个顶点,顶点上标有数字 1 , 2 , … , N 1,2,\ldots,N 1,2,,N

给你 G G G的邻接矩阵 ( A i , j ) (A_{i,j}) (Ai,j)。也就是说,当且仅当 A i , j = 1 A_{i,j}=1 Ai,j=1时, G G G有一条边连接顶点 i i i j j j

对于每个 i = 1 , 2 , … , N i=1,2,\ldots,N i=1,2,,N,按升序输出与顶点 i i i直接相连的顶点的编号。

当且仅当顶点 i i i j j j之间有一条边相连时,顶点 i i i j j j才被认为是直接相连的。

分析:

如果是 1 1 1代表连通,输出其索引即可。

代码:

#include<bits/stdc++.h>using namespace std;int main() {int n;cin >> n;for (int t = 1; t <= n; t++) {for (int i = 1; i <= n; i++) {int x;cin >> x;if (x)cout << i << ' ';}cout << endl;}return 0;
}

C.343(遍历)

题意:

给你一个正整数 N N N

求一个不大于 N N N的最大回文立方数。

正整数 K K K只有在满足以下两个条件时才被定义为回文立方数:

  • 有一个正整数 x x x,使得 x 3 = K x^3=K x3=K.
  • K K K的十进制表示不含前导零,而且是一个回文数。更确切地说,如果用介于 0 0 0 9 9 9(含)之间的整数 A 0 , A 1 , … , A L − 2 A_0,A_1,\ldots,A_{L-2} A0,A1,,AL2和介于 1 1 1 9 9 9(含)之间的整数 A L − 1 A_{L-1} AL1 K K K表示为 K = ∑ i = 0 L − 1 A i 1 0 i K=\sum\limits_{i = 0}^{L-1}A_i10^i K=i=0L1Ai10i,则所有 i = 0 , 1 , … , L − 1 i=0,1,\ldots,L-1 i=0,1,,L1都是 A i = A L − 1 − i A_i=A_{L-1-i} Ai=AL1i

分析:

n n n的范围是 1 e 18 1e18 1e18, 所以只需要遍历到 1 e 6 1e6 1e6即可,枚举然后判断是否为回文数即可。

代码:

#include<bits/stdc++.h>typedef long long LL;
using namespace std;bool check(LL n) {string s;while (n) {s += n % 10 + '0';n /= 10;}int len = s.size();s = '$' + s;for (int i = 1; i <= len / 2; i++)if (s[i] != s[len - i + 1])return false;return true;
}int main() {LL n;cin >> n;LL ans = 1;for (LL i = 2; i * i * i <= n; i++) {LL temp = i * i * i;if (check(temp)) {ans = temp;}}cout << ans << endl;return 0;
}

D.Diversity of Scores(遍历)

题意:

高桥正在举办一场有 N N N名选手参加的比赛,选手编号为 1 1 1 N N N。选手们将争夺积分。目前,所有棋手的积分都是零。

高桥的预知能力让他知道选手们的分数将如何变化。具体来说,对于 i = 1 , 2 , … , T i=1,2,\dots,T i=1,2,,T A i A_i Ai选手的分数将在 i i i秒后增加 B i B_i Bi分。

高桥希望分数多样化,他想知道在每个时刻棋手的分数中会出现多少个不同的分数值。对于每个 i = 1 , 2 , … , T i=1,2,\dots,T i=1,2,,T,求从现在起 i + 0.5 i+0.5 i+0.5秒钟后玩家分数中不同分值的数量。

例如,如果在某一时刻球员的得分分别为 10 10 10 20 20 20 30 30 30 20 20 20,那么在该时刻球员的得分中有三个不同的分值。

分析:

初始化 0 0 0 N N N,开始肯定是 1 1 1,因为都是 0 0 0,可以用 m a p < v a l u e s 值,人数 > m p map < values \text{值,人数} > mp map<values,人数>mp来储存这个值,对于每一次相加 B , m p [ W [ A ] ] B, mp[W[A]] B,mp[W[A]]就要减去一个人数到了新的地方,以此类推即可。

代码:

#include<bits/stdc++.h>typedef long long LL;
using namespace std;
const LL N = 2e5 + 10;map<LL, LL> mp;
LL W[N];int main() {LL n, T;cin >> n >> T;mp[0] = n;LL ans = 1;for (LL i = 1; i <= T; i++) {LL A, B;cin >> A >> B;mp[W[A]]--;if (!mp[W[A]])ans--;W[A] += B;if (!mp[W[A]])ans++;mp[W[A]]++;cout << ans << endl;}return 0;
}

E.7x7x7(枚举)

题意:

在一个坐标空间中,我们想放置三个边长为 7 7 7的立方体,这样正好一个、两个、三个立方体所包含区域的体积分别为 V 1 V_1 V1 V 2 V_2 V2 V 3 V_3 V3

对于三个整数 a a a b b b c c c,让 C ( a , b , c ) C(a,b,c) C(a,b,c)表示由 ( a ≤ x ≤ a + 7 ) ∧ ( b ≤ y ≤ b + 7 ) ∧ ( c ≤ z ≤ c + 7 ) (a\leq x\leq a+7)\land(b\leq y\leq b+7)\land(c\leq z\leq c+7) (axa+7)(byb+7)(czc+7)代表的立方体区域。

判断是否有满足下列所有条件的九个整数 a 1 , b 1 , c 1 , a 2 , b 2 , c 2 , a 3 , b 3 , c 3 a_1,b_1,c_1,a_2,b_2,c_2,a_3,b_3,c_3 a1,b1,c1,a2,b2,c2,a3,b3,c3,如果存在,请找出一个这样的元组。

  • ∣ a 1 ∣ , ∣ b 1 ∣ , ∣ c 1 ∣ , ∣ a 2 ∣ , ∣ b 2 ∣ , ∣ c 2 ∣ , ∣ a 3 ∣ , ∣ b 3 ∣ , ∣ c 3 ∣ ≤ 100 |a_1|,|b_1|,|c_1|,|a_2|,|b_2|,|c_2|,|a_3|,|b_3|,|c_3|\leq 100 a1,b1,c1,a2,b2,c2,a3,b3,c3100
  • C i = C ( a i , b i , c i ) ( i = 1 , 2 , 3 ) C_i=C(a_i,b_i,c_i)\ (i=1,2,3) Ci=C(ai,bi,ci) (i=1,2,3)
    • 恰好包含 C 1 , C 2 , C 3 C_1,C_2,C_3 C1,C2,C3中一个的区域的体积为 V 1 V_1 V1
    • 恰好包含两个 C 1 , C 2 , C 3 C_1,C_2,C_3 C1,C2,C3的区域的体积是 V 2 V_2 V2
    • 所有 C 1 , C 2 , C 3 C_1,C_2,C_3 C1,C2,C3所包含的区域的体积是 V 3 V_3 V3

分析:

假设第一个正方体的位置恒为 ( 0 , 0 , 0 ) (0,0,0) (0,0,0),暴力枚举第二、三个正方体的位置,判断每种放置方法是否合法即可

对于枚举位置,让三个正方体离太远没有意义,只需要枚举所有能使得三个正方体相交或至少有一个面重合的最大范围即可,则可以枚举的第二个正方体的三个维度的坐标值在 ( 0 , 7 ) (0,7) (0,7),第三个正方体的坐标值在 ( − 7 , 14 ) (-7,14) (7,14)

代码:

#include<bits/stdc++.h>using namespace std;int get_d(int x, int tx) {return max(0, min(x, tx) + 7 - max(x, tx));
}int get_d(int sx, int x, int tx) {return max(0, min({sx, x, tx}) + 7 - max({sx, x, tx}));
}int fun(int ax, int ay, int az, int bx, int by, int bz) {int dx = get_d(ax, bx), dy = get_d(ay, by), dz = get_d(az, bz);return dx * dy * dz;
}void solve() {int v1, v2, v3;cin >> v1 >> v2 >> v3;for (int x = 0; x <= 7; x++) {for (int y = 0; y <= 7; y++) {for (int z = 0; z <= 7; z++) {for (int tx = -7; tx <= 14; tx++) {for (int ty = -7; ty <= 14; ty++) {for (int tz = -7; tz <= 14; tz++) {int dx = get_d(0, x, tx);int dy = get_d(0, y, ty);int dz = get_d(0, z, tz);int tv3 = dx * dy * dz;if (tv3 != v3)continue;int tv2 = fun(0, 0, 0, x, y, z) + fun(0, 0, 0, tx, ty, tz) + fun(x, y, z, tx, ty, tz) -3 * tv3;if (tv2 != v2)continue;int tv1 = 3 * 7 * 7 * 7 - 3 * tv3 - 2 * tv2;if (tv1 != v1)continue;cout << "Yes" << endl;cout << "0 0 0 " << x << " " << y << " " << z << " " << tx << " " << ty << " " << tz<< endl;return;}}}}}}cout << "No" << endl;
}int main() {solve();return 0;
}

F.Second Largest Query(线段树)

题意:

给你一个长度为 N N N的序列 A = ( A 1 , A 2 , … , A N ) A=(A_1,A_2,\ldots,A_N) A=(A1,A2,,AN)

按照给出的顺序处理 Q Q Q个查询。每个查询属于以下两种类型之一:

  • 类型 1 1 1:以1 p x的形式给出。将 A p A_p Ap的值改为 x x x
  • 类型 2 2 2:输出 ( A l , A l + 1 , … , A r ) (A_l,A_{l+1},\ldots,A_r) (Al,Al+1,,Ar)中第二大数值的出现次数。更准确地说,输出满足 l ≤ i ≤ r l\leq i\leq r lir的整数 i i i的个数,即在 A l , A l + 1 , … , A r A_l,A_{l+1},\ldots,A_r Al,Al+1,,Ar中正好有一个大于 A i A_i Ai的不同值。

分析:

可以直接用线段树维护四个信息,每个节点维护这个区间对应的最大值、次大值、以及他们各自的出现次数,使用线段树板子加上求第二大的数即可。

代码:

#include<bits/stdc++.h>using namespace std;template<class Info, class Merge = std::plus<Info>>struct SegmentTree {const int n;const Merge merge;vector<Info> info;SegmentTree(int n) : n(n), merge(Merge()), info(4 << std::__lg(n)) {}SegmentTree(vector<Info> init) : SegmentTree(init.size()) {function<void(int, int, int)> build = [&](int p, int l, int r) {if (r - l == 1) {info[p] = init[l];return;}int m = (l + r) / 2;build(2 * p, l, m);build(2 * p + 1, m, r);pull(p);};build(1, 0, n);}void pull(int p) {info[p] = merge(info[2 * p], info[2 * p + 1]);}void modify(int p, int l, int r, int x, const Info &v) {if (r - l == 1) {info[p] = v;return;}int m = (l + r) / 2;if (x < m) {modify(2 * p, l, m, x, v);} else {modify(2 * p + 1, m, r, x, v);}pull(p);}void modify(int p, const Info &v) {modify(1, 0, n, p, v);}Info rangeQuery(int p, int l, int r, int x, int y) {if (l >= y || r <= x) {return Info();}if (l >= x && r <= y) {return info[p];}int m = (l + r) / 2;return merge(rangeQuery(2 * p, l, m, x, y), rangeQuery(2 * p + 1, m, r, x, y));}Info rangeQuery(int l, int r) {return rangeQuery(1, 0, n, l, r);}
};struct Info {int mx1 = -1;int cnt1 = 0;int mx2 = -2;int cnt2 = 0;
};Info operator+(Info a, Info b) {if (a.mx1 == b.mx1) {if (a.mx2 < b.mx2) {swap(a, b);}a.cnt1 += b.cnt1;if (a.mx2 == b.mx2) {a.cnt2 += b.cnt2;}return a;}if (a.mx1 < b.mx1) {swap(a, b);}if (b.mx1 > a.mx2) {a.mx2 = b.mx1;a.cnt2 = b.cnt1;} else if (b.mx1 == a.mx2) {a.cnt2 += b.cnt1;}return a;
}int main() {int N, Q;cin >> N >> Q;vector<int> A(N);for (int i = 0; i < N; i++) {cin >> A[i];}SegmentTree<Info> seg(N);for (int i = 0; i < N; i++) {seg.modify(i, Info{A[i], 1, -1, 0});}while (Q--) {int type;cin >> type;if (type == 1) {int p, x;cin >> p >> x;p--;seg.modify(p, {x, 1, -1, 0});} else {int l, r;cin >> l >> r;l--;cout << seg.rangeQuery(l, r).cnt2 << endl;}}return 0;
}

赛后交流

在比赛结束后,会在交流群中给出比赛题解,同学们可以在赛后查看题解进行补题。

群号: 704572101,赛后大家可以一起交流做题思路,分享做题技巧,欢迎大家的加入。

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

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

相关文章

qnx display

05-SA8155 QNX Display框架及代码分析(1)_openwfd-CSDN博客 backlight p: 0 t: 0 00000 SHD -----ONLINE----- 2024/03/06 13:49:22.046 backlight p:1060958 t: 1 00000 ERR backlight_be[backlight_be.c:284]: pthread_create enter 2024/03/06 13…

python基础练习题目

1. 根据身高体重&#xff0c;判断人的胖瘦 描述&#xff1a; 通过身高和体重&#xff0c;判断一个人的胖瘦。国际上一般采用BMI体重指数&#xff0c;计算公式为BMI 体重 / 身高2(保留小数点后1位)&#xff0c;参考标准如下&#xff1a;‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪…

SpringBoot集成RocketMQ

RocketMQ是一个纯Java、分布式、队列模型的开源消息中间件&#xff0c;前身是MetaQ&#xff0c;是阿里参考Kafka特点研发的一个队列模型的消息中间件&#xff0c;后开源给apache基金会成为了apache的顶级开源项目&#xff0c;具有高性能、高可靠、高实时、分布式特点。 环境搭…

对VisionPro的认识,CogPMAlingTool模板匹配工具练习

什么是VisionPro&#xff1f; 在认识VisionPro之前我们需要先熟悉一下图片的各种格式 这里我们可以参考来自githubcurry博主的文章 图片各种格式的区别以及计算机如何存储图片 VisionPro 是由世界领先的机器视觉公司 Cognex 开发的一款专业机器视觉软件。它提供了强大的图像…

【一】【SQL Server】如何运用SQL Server中查询设计器通关数据库期末查询大题

职工考勤20170320 职工考勤20170320数据库展示 职工考勤表展示 职务代码表展示 一、基本操作 代码方式&#xff1a; --第一大题、基本操作 ALTER TABLE [dbo].[职工考勤表] DROP COLUMN [照片];EXEC sp_rename dbo.职工考勤表.职工编号, 工号, COLUMN;ALTER TABLE 职工考勤表 A…

华为HQoS配置案例

HQoS基于层次化调度&#xff0c;cpe上支持三级队列&#xff1a; level3流队列&#xff1a;每个用户的同类业务是一个业务流&#xff0c;针对每个用户不同的业务流进行队列调度&#xff0c;流队列一般与业务类型对应&#xff08;EF、AF、BE等&#xff09;。 level2用户队列&…

2024年安卓开发者跳槽指南,音视频时代你还不会NDK开发

正式加入字节跳动&#xff0c;分享一点面试小经验 今天正式入职了字节跳动。工号超吉利&#xff0c;尾数是3个6。然后办公环境也很好&#xff0c;这边一栋楼都是办公区域。公司内部配备各种小零食、饮料&#xff0c;还有免费的咖啡。15楼还有健身房。而且公司包三餐来着。下午…

【YOLO v5 v7 v8 v9小目标改进】新CNN架构 InceptionNeXt:怎么让大卷积核既好用又快

新CNN架构 InceptionNeXt&#xff1a;怎么让大卷积核既好用又快 提出背景问题: 如何提高大核心卷积的效率&#xff0c;同时保持或提升模型性能&#xff1f; 改进思路MetaNeXtInception深度卷积InceptionNeXt 小目标涨点YOLO v5 魔改YOLO v7 魔改YOLO v8 魔改YOLO v9 魔改 提出背…

RUUFFY、由利、希亦内衣洗衣机怎么样?测评对比谁更好?

我们传统的洗衣机其实并不可以用来清洗内衣裤&#xff0c;以及袜子这类小型的衣物&#xff0c;容易出现细菌的交叉感染&#xff0c;而且传统洗衣机单单清洗这些小件衣物并不划算&#xff0c;需要很多的水量&#xff0c;有些全自动的大型洗衣机需要更多的衣物同时清洗才能正常工…

110. 平衡二叉树【简单】

110. 平衡二叉树【简单】 题目描述&#xff1a; 给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树。 本题中&#xff0c;一棵高度平衡二叉树定义为&#xff1a; 一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1 。 示例 1&#xff1a; 输入&#xff1a;r…

IDEA修改git提交者的信息

git提交后&#xff0c;idea会记录下提交人的信息&#xff0c;如果不修改提交人信息的话&#xff0c;会有一个默认值。避免每次提交都要填提交人信息&#xff0c;直接设置成自己想要的默认值&#xff0c;该怎么操作&#xff1f; 提交的时候在这里修改提交人信息 避免每次都去设置…

和鲸科技受邀参与湖南省气象信息中心开展人工智能研究型业务支撑平台学术交流

为推进湖南省机器学习统一平台建设&#xff0c;2 月 29 日&#xff0c;湖南省气象信息中心开展学术讲座活动&#xff0c;活动由中心副主任冯冼主持&#xff0c;中心业务骨干、湖南省气象台、湖南分院等技术人员参加。 本次讲座邀请上海和今信息科技有限公司&#xff08;简称“…

【企业动态】欢迎法国客户来访东胜物联,深入探讨智能化合作

本周&#xff0c;来自法国的客户莅临我司工厂进行实地参观考察。客户是一家历史悠久的设备供应商&#xff0c;其产品涵盖冷链、餐饮、农业等多个行业应用领域&#xff0c;正致力于从传统设备向智能设备转型&#xff0c;希望将设备接入物联网。在此次访问中&#xff0c;他们参观…

fastapi_mail发送邮件,邮件附件文件重命名

当fastapi_mail发送邮件的时候&#xff0c;想对附件的名称进行重命名 以下是fastapi_mail下的schemas.py的源码 import os from enum import Enum from mimetypes import MimeTypes from typing import Dict, List, Optional, Unionfrom pydantic import BaseModel, EmailStr,…

python大数据分析游戏行业中的 Apache Kafka:用例 + 架构!

python大数据分析游戏行业中的 Apache Kafka&#xff1a;用例 架构&#xff01; 这篇博文探讨了使用 Apache Kafka 的事件流如何提供可扩展、可靠且高效的基础设施&#xff0c;让游戏玩家开心并让游戏公司取得成功。讨论了游戏行业中的各种用例和架构&#xff0c;包括在线和移…

C++初阶篇----类与对象中卷

目录 引言1. 构造函数1.1概念1.2 特性 2. 析构函数2.1 概念2.2 特性 3. 拷贝构造函数3.1 概念3.2特征 4. 赋值运算符重载4.1 运算符重载4.2 赋值运算符重载4.3 前置和后置重载 5.日期类的实现6.const成员7.取地址及const取地址操作符重载 引言 当一个类既没有成员变量又没有成…

汉诺塔问题(C语言)

一&#xff1a;问题 汉诺塔&#xff08;Tower of Hanoi&#xff09;&#xff0c;又称河内塔&#xff0c;是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子&#xff0c;在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从…

QVector和QString互相转换

我的画图项目需要读写自定义虚线样式 {...comboBox_penStyle new QComboBox;QStringList SL_penStyle;SL_penStyle << "______" << "----------" << ".........." << "-.-.-.-.-." << "-..-..-..…

【OJ】日期差值与日期累加

个人主页 &#xff1a; zxctscl 如有转载请先通知 文章目录 1. KY111 日期差值1.1 题目分析1.2 代码 2. KY258 日期累加2.1 题目分析2.2 代码 1. KY111 日期差值 1.1 题目分析 日期之间比较可能会出现给的两个年月日都不相同&#xff0c;这个就不好作差&#xff0c;每个月给的…

LeetCode每日一题 二叉树的最大深度(二叉树)

题目描述 给定一个二叉树 root &#xff0c;返回其最大深度。二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3 示例 2&#xff1a; 输入&#xff1a;root [1,nul…