【AtCoder】 AtCoder Beginner Contest 103 (ABC103)

2023-05-16

先上一张最终结果的图吧:

感觉AtCoder的ABC还是比较练手的,考验代码速度,网速,D题还会有一些思维难度。

这次ABC由于网络原因,很迟才看到题,但完成得还是不错的。

题解:

A

题意:给你三个都需要被完成的任务的难度a,b,c,均为1至100的正整数。

首先,你可以用0的花费完成任何一个任务。

如果你完成了一个任务,那么你可以完成另一个任务,花费是两个任务的难度的差的绝对值。

题解:利用绝对值的几何意义可以发现,最优解一定是选择难度在中间的那个任务完成,然后再完成另外两个任务。

那么最终的花费一定是难度最大的任务的难度减去难度最小的任务的难度。

代码:

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

int main()
{
	int a,b,c;
	cin >> a >> b >> c;
	cout << max(max(a,b),c)-min(min(a,b),c) << endl;
}

B

题意:给你字符串ST,每次可以对S串进行一种操作:将S串的最后一个字符取出,扔到最前面去。

问是否能将S串变为T串。

S串和T串的长度均小于或等于100且相等。

题解:显然暴力执行操作,暴力判断。

代码:

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

int main()
{
	string s,t;
	cin >> s >> t;
	for(int i=0;i<s.length();++i)
	{
		char c=s[s.length()-1];
		string tmp=s;
		s.pop_back();
		s.insert(s.begin(),c);
		if(s==t)
		{
			puts("Yes");
			return 0;
		}
	}
	puts("No");
}

C

题意:给你N个正整数a_{1},a_{2},a_{3},...,a_{N},我们定义

f(m)=(m \bmod a_{1})+(m \bmod a_{2})+(m \bmod a_{3})+...+(m \bmod a_{n})

其中m为自然数。

f(m)的最大值。

2 \leq N \leq 30002 \leq a_{i} \leq 10^5

题解:首先这道题求的是最大值(最小值显然为0),容易想到暴力枚举m,但显然会超时。

细心的读者也许发现了,我C题的通过时间比B题早将近7分钟,原因竟然是:

当我码着B题,想着C题的时候,隔壁一名大佬(STO yeh)突然说了声最小公倍数。

我一想,m取所有数的最小公倍数减一,那么。。。。。

那么C题比B题好码多了,于是码了C,于是C题便比B早提交。。。别问我为什么还过了7分钟才交B

证明:这个不需要证明吧。。。。

代码:

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

int main()
{
	int n,x,sum=0;
	scanf("%d",&n);
	for(int i=1;i<=n;++i)
	{
		scanf("%d",&x);
		sum+=x-1;
	}
	printf("%d\n",sum);
}

的确比B好码得多啊。。。。

D

没错又是一道有思维难度的题目(大佬除外)。

题意:给你一条n个点的链,点按顺序标号为1n,然后输入一些点对,让你删边,使得这些点对都不连通,求最少删边数量。

2\leq N \leq 10^51\leq M\leq 10^51\leq ai< bi\leq N

题解:在这道题上卡了很久。

其实不应该卡那么久,因为曾经做过这道题的树上版本,但由于那道题是删点,所以一开始以为不适用,但是后来想了一想,其实可以套用。

方法就是:将所有区间按照右端点的大小排序(从小到大),然后对于一个区间,若它当前未被切断,则切断它最右的一条边。

证明:用类似归纳法的思想,对于右端点最小(最左)的区间,它一定要被切断,为了“惠及”尽可能多的区间,切断它最右的一条边。为什么最优呢,因为这是它已经是右端点最左的区间了,因此只有切断最右的那条边,才能切断最多的区间。

于是我们排除掉已经被切断的区间,再次找到右端点最小的未被切断的区间,由于前面的决策是最优的(已证明),我们可以忽略掉那些区间。此时,切断该区间最右的边一定是最优的,证法同上。

拓展:关于树上的做法(那道题是删点),将所有点对的lca按照深度排序,从深度大的点往深度小的点删,证法类似,不详细展开,有兴趣的读者可以自行查阅资料。

代码:

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

#define MAXN 100001

struct data{
	int a,b;
	bool operator<(const data &d)const{
		return b<d.b;
	}
}a[MAXN];

int n,m;

int main()
{
	scanf("%d%d",&n,&m);
	for(int i=1;i<=m;++i)
	{
		scanf("%d%d",&a[i].a,&a[i].b);
	}
	sort(a+1,a+m+1);
	int now=0,ans=0;
	for(int i=1;i<=m;++i)
	{
		if(now<=a[i].a)
		{
			now=a[i].b;
			++ans;
		}
	}
	printf("%d\n",ans);
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【AtCoder】 AtCoder Beginner Contest 103 (ABC103) 的相关文章

随机推荐

  • 新装Ubuntu系统基本环境安装配置(conda)

    Ubuntu系统用conda来配置深度学习环境 1 配置显卡驱动 查看显卡驱动 nvidia smi 如果是这个命令没有反应 xff0c 就是没有显卡驱动 xff0c 这个时候要先安装显卡驱动 然后再安装cuda xff0c 在这个图中 x
  • Python源码加密与Pytorch模型加密

    0 前言 深度学习领域 xff0c 常常用python写代码 xff0c 而且是建立在一些开源框架之上 xff0c 如pytorch 在实际的项目部署中 xff0c 也有用conda环境和python代码去部署服务器 xff0c 在这个时候
  • Paddle-Lite终端部署深度学习模型流程

    Paddle Lite是飞桨基于Paddle Mobile全新升级推出的端侧推理引擎 xff0c 在多硬件 多平台以及硬件混合调度的支持上更加完备 xff0c 为包括手机在内的端侧场景的AI应用提供高效轻量的推理能力 xff0c 有效解决手
  • nohup: failed to run command `java': No such file or directory

    问题描述 xff1a 平台研发项目 xff0c ActiveQM做消息队列 xff0c zookeeper做集群 xff0c zkui做可视化服务管理 xff0c skynet是引擎服务 xff0c skynet下面有一个xmanager是
  • 【原理篇】一文读懂Faster RCNN

    0 Faster RCNN概述 论文地址 xff1a https arxiv org pdf 1506 01497 pdf Faster R CNN源自2016年发表在cs CV上的论文 Faster R CNN Towards Real
  • 【原理篇】一文读懂Mask RCNN

    Mask RCNN 何凯明大神的经典论文之一 xff0c 是一个实例分割算法 xff0c 正如文中所说 xff0c Mask RCNN是一个简单 灵活 通用的框架 xff0c 该框架主要作用是实例分割 xff0c 目标检测 xff0c 以及
  • 【原理篇】一文读懂FPN(Feature Pyramid Networks)

    论文 xff1a feature pyramid networks for object detection 论文链接 xff1a https arxiv org abs 1612 03144 这篇论文是CVPR2017年的文章 xff0c
  • pytorch用voc分割数据集训练FCN

    语义分割是对图像中的每一个像素进行分类 xff0c 从而完成图像分割的过程 分割主要用于医学图像领域和无人驾驶领域 和其他算法一样 xff0c 图像分割发展过程也经历了传统算法到深度学习算法的转变 xff0c 传统的分割算法包括阈值分割 分
  • 【学习笔记】语义分割综述

    语义分割就是图像分割 xff0c 是图像像素级的分类 xff0c 即给图像的每一个像素点分类 与之临近的一个概念叫实例分割 xff0c 实例分割就是语义分割 43 目标检测 语义分割只能分割出所有同类的像素 xff0c 目标检测把不同的个体
  • pytorch用自己数据集训练Unet

    在图像分割这个问题上 xff0c 主要有两个流派 xff1a Encoder Decoder和Dialated Conv 本文介绍的是编解码网络中最为经典的U Net 随着骨干网路的进化 xff0c 很多相应衍生出来的网络大多都是对于Une
  • 【史上最全】重装ubuntu20.04系统基本环境配置

    最近新买电脑重装ubuntu玩深度学习 xff0c 踩了两天坑总结处下列流程 一 重装系统 xff08 U盘方式 xff09 ubuntu20 04镜像文件下载地址 Ubuntu 20 04 4 Desktop 64 bit 在ubuntu
  • PaddleDetection2.x训练、部署自己的模型

    PaddleDetection是百度Paddle家族的一个目标检测开发套件 个人感觉Paddle的优点是模型比较丰富 xff0c 支持的部署方式较多 xff08 python C 43 43 移动端等 xff09 xff0c 缺点是坑比较多
  • TensorRT(C++)部署 Pytorch模型

    众所周知 xff0c python训练pytorch模型得到 pt模型 但在实际项目应用中 xff0c 特别是嵌入式端部署时 xff0c 受限于语言 硬件算力等因素 xff0c 往往需要优化部署 xff0c 而tensorRT是最常用的一种
  • 安卓端使用ncnn部署yolov5(v6.0)

    ncnn是腾讯公司开源的一个专为手机端极致优化的高性能神经网络前向计算框架 ncnn从设计之初 xff0c 就深刻考虑手机端的部署和使用 xff0c 无需第三方依赖 xff0c 跨平台 xff0c 手机端cpu的速度快于目前所有已知的开源框
  • 软件工程本科毕业设计题目推荐?软件工程毕设题目大全

    软件工程本科毕业设计题目推荐 xff1f 这个的话首先你对那些方面比较熟悉 xff0c 毕竟软件工程范围还是比较广的 xff0c 所以这个你得要自己确定好方向 xff0c 这个很重要 首先软件工程专业可以做网站 xff0c 系统 xff0c
  • 人工智能论文猜想

    一 前言 人类是不是机器人 随着时代的进步 xff0c 人工智能诞生了 又随着人工智能的进步 xff0c ChatGPT诞生了 xff0c 这不仅让我想出一个问题 xff1a 我们人类是不是机器人 xff1f ChatGPT xff0c 发
  • 机器学习线性分类

    数学模型 分类的目标是把输入 x 匹配到唯一的离散型类别 Ck 中 在一个平面中 xff0c 我们可以用一条直线分开两组数据 xff0c 所以这条直线 xff0c 一般来讲是在D维输入空间中的 xff08 D 1 xff09 维超平面 xf
  • marlin2.0 的使用过程记录。skr v1.3

    硬件 tb购入 xff0c 主控是LPC1768 xff0c 32位的 软件 软件下载地址 https github com bigtreetech BIGTREETECH SKR V1 3 这个git库是skr板子的商家维护的 xff0c
  • Codeforces Round #774 (Div. 2)(A-C)

    Problem A Codeforces 签到题 xff0c 判断s里面最多能够有多少个 AC代码 pragma GCC optimize 2 pragma GCC optimize 3 pragma GCC optimize 34 Ofa
  • 【AtCoder】 AtCoder Beginner Contest 103 (ABC103)

    先上一张最终结果的图吧 xff1a 感觉AtCoder的ABC还是比较练手的 xff0c 考验代码速度 xff0c 网速 xff0c D题还会有一些思维难度 这次ABC由于网络原因 xff0c 很迟才看到题 xff0c 但完成得还是不错的