AtCoder Beginner Contest 333 题解 A-E

目录

A - Three Threes

原题链接

题目描述
讲一个数字n输出n次。

public static void solve() throws IOException {int n = readInt();printWriter.println(String.valueOf(n).repeat(n));
}

B - Pentagon

原题链接

题目描述
一个有五个顶点的等边菱形,现在给出菱形两条边,判断这两条边的长度是否相等。

思路:数据结果

  • 使用两个set存在长度相等的所有边。
public static void solve() throws IOException {Set<String> set1 = new HashSet<>(), set2 = new HashSet<>();set1.add("AB");set1.add("BA");set1.add("BC");set1.add("CB");set1.add("CD");set1.add("DC");set1.add("ED");set1.add("DE");set1.add("AE");set1.add("EA");set2.add("AD");set2.add("AC");set2.add("BE");set2.add("BD");set2.add("CA");set2.add("CE");set2.add("DA");set2.add("DB");set2.add("EB");set2.add("EC");String s = readString(), s2 = readString();printWriter.println((set1.contains(s) && set1.contains(s2)) || (set2.contains(s) && set2.contains(s2)) ? "Yes" : "No");
}

C - Repunit Trio

原题链接

题目描述
一种repunit 数它的十进制数位都是1。按升序排列的 repunits1,11,111,…。求出可以表示为恰好三个 repunits 之和的第n小的整数。

思路:全排列

  • 深搜枚举出所有可以由三个repunit 数可以表示出的和。
static long[] arr = 
new long[]{1, 11, 111, 1111, 11111, 111111, 1111111, 11111111, 111111111, 1111111111, 11111111111l, 111111111111l};
static List<Long> list = new ArrayList<>();public static void solve() throws IOException{int n = readInt();dfs(0, 0);Collections.sort(list);printWriter.println(list.get(n - 1));
}static long sum = 0;
public static void dfs(int u, int cnt) {if (cnt == 3) {list.add(sum);return;}for (int i = u; i < arr.length; i++) {sum += arr[i];dfs(i, cnt + 1);sum -= arr[i];}
}

D - Erase Leaves

原题链接

题目描述
给你一棵有 N N N 个顶点的树:顶点 1 , 1, 1, 顶点 2 2 2, … \ldots , 顶点 N N N i i i-th 边 ( 1 ≤ i < N ) (1\leq i\lt N) (1i<N) 连接顶点 u i u _ i ui 和顶点 v i v _ i vi。考虑重复下面的操作若干次:

  • 选择一个叶顶点 v v v,删除它和所有的附带边。

求删除顶点 1 1 1 所需的最少操作次数。

思路:深搜

  • 枚举节点1的每个邻点,假设有k个邻点,深搜求出删除k个邻点的所需操作数,按照操作数升序排序后,答案为删除前k-1个邻点的操作数之和+1,因为节点1也要被删除。
static List<Integer>[] edges;
static int res = 1 << 30;
public static void solve() throws IOException{int n = readInt();edges = new List[n + 10];Arrays.setAll(edges, e -> new ArrayList<>());for (int i = 0; i < n - 1; i++) {int a = readInt(), b = readInt();edges[a].add(b);edges[b].add(a);}if (edges[1].size() == 1) {printWriter.println(1);return;}List<Integer> list = new ArrayList<>();// 遍历节点1的所有邻点for (int i = 0; i < edges[1].size(); i++) {list.add(dfs(edges[1].get(i), 1));}Collections.sort(list);int sum = 0;for (int i = 0; i < list.size() - 1; i++) sum += list.get(i);printWriter.println(sum + 1);
}public static int dfs(int u, int pa) {if (edges[u].size() == 1) return 1;int sum = 1;for (int i = 0; i < edges[u].size(); i++) {int p = edges[u].get(i);if (p != pa) {// 不再向上搜sum += dfs(edges[u].get(i), u);}}return sum;
}

E - Takahashi Quest

原题链接

题目描述
N N N 个事件。第 i i i个事件 ( 1 ≤ i ≤ N ) (1\leq i\leq N) (1iN) 由一对整数 ( t i , x i ) (t _ i,x _ i) (ti,xi) 表示。

  • 如果 t i = 1 t _ i=1 ti=1,你找到了一个 x i x _ i xi类型的药水。你可以选择捡起或丢弃。
  • 如果 t i = 2 t _ i=2 ti=2,你将遇到一只 x i x _ i xi 类型的怪物。如果你有 x i x _ i xi型药水,你可以使用一种药水击败怪物。如果你没有打败怪物,那么你就会被打败。

判断你是否可以打败所有怪物。如果你无法打败所有怪物,则输出 -1。否则,让 K K K成为在你不被打败的前提下手中最小需要拥有的药水数量,打印 K K K的值以及实现 K K K的行动。

思路:逆向思维+枚举

  • 从后往前遍历每个事件,使用数组cnt记录下每种类型的药水需要的数量,tc表示还有多少怪兽没有解决,max表示最多还有多少怪兽没有解决,也就是上面的K
public static void solve() throws IOException{int n = readInt();int[] t = new int[n + 5], x = new int[n + 5];for (int i = 0; i < n; i++) {t[i] = readInt();x[i] = readInt();}int[] cnt = new int[n + 5];boolean[] st = new boolean[n + 5];int tc = 0, max = 0;for (int i = n - 1; i >= 0; i--) {if (t[i] == 1) {if (cnt[x[i]] > 0) {// 拥有这种类型的药水,可以抵消cnt[x[i]]--;tc--;st[i] = true;// 该位置使用了药水}} else {cnt[x[i]]++;tc++;}max = Math.max(max, tc);}if (tc > 0) {// 怪兽没打完printWriter.println(-1);return;}printWriter.println(max);for (int i = 0; i < n; i++) {if (t[i] == 1) {printWriter.print((st[i] ? 1 : 0) + " ");}}
}

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

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

相关文章

杰理-音箱-flash配置

杰理-音箱-flash配置 注意配置io&#xff0c;双线或者4线的硬件连接方式&#xff0c;否则无法烧录UI资源

哈希扩展:位图与布隆过滤器

目录 1. 位图1.1 位图引入1.2 位图概念1.3 位图的模拟实现1.4 位图相关问题1.5 位图的应用 2. 布隆过滤器2.1 布隆过滤器概念2.2 模拟实现2.3 布隆过滤器相关问题2.3.1 哈希切分 1. 位图 1.1 位图引入 给40亿个不重复的无符号整数&#xff0c;没排过序。给一个无符号整数&…

tp连接数据库

ThinkPHP内置了抽象数据库访问层&#xff0c;把不同的数据库操作封装起来&#xff0c;我们只需要使用公共的Db类进行操作&#xff0c;而无需针对不同的数据库写不同的代码和底层实现&#xff0c;Db类会自动调用相应的数据库驱动来处理。采用PDO方式&#xff0c;目前包含了Mysql…

LabVIEW开发地铁运行安全监控系统

LabVIEW开发地铁运行安全监控系统 最近昌平线发生的故障事件引起了广泛关注&#xff0c;暴露了现有地铁运行监控系统在应对突发情况方面的不足。为了提高地铁系统的运行安全性&#xff0c;并防止类似事件再次发生&#xff0c;提出了一套全面的地铁运行安全监控系统方案。此方案…

MySQL数据库,变量、流程控制与游标

变量 系统变量 系统变量分为全局系统变量&#xff08;需要添加global关键字&#xff09;以及会话系统变量&#xff08;需要添加session关键字&#xff09;有时将全局系统变量简称为全局变量&#xff0c;将会话系统变量称为local变量。如果不写&#xff0c;默认会话级别。静态…

如何在页面中加入百度地图

官方文档&#xff1a;jspopularGL | 百度地图API SDK (baidu.com) 添加一下代码就可以实现 <!DOCTYPE html> <html> <head><meta name"viewport" content"initial-scale1.0, user-scalableno"/><meta http-equiv"Conten…

超分辨率重建——SAN训练自己数据集及推理测试(详细图文教程)

目录 一、源码包下载二、数据集准备三、预训练权重文件四、训练环境五、训练5.1 超参数修改5.2 训练模型5.2.1 命令方式训练5.2.2 Configuration配置参数方式训练 5.3 模型保存 六、推理测试6.1 超参数修改6.2 测试6.2.1 命令方式测试6.2.2 Configuration配置参数方式测试 6.3 …

响应者链概述

响应者链 iOS事件的3大类型 Touch Events(触摸事件)Motion Events(运动事件&#xff0c;比如重力感应和摇一摇等)Remote Events(远程事件&#xff0c;比如用耳机上得按键来控制手机) 触摸事件 处理触摸事件的两个步骤 寻找事件的最佳响应者事件的响应在响应链中的传递 寻…

Web UI 自动化 元素定位利器

序 元素定位&#xff0c;对于 Web UI 自动化而言&#xff0c;绝对是大家成长道路上的一道绊脚石。 很多初学者&#xff0c;都“死”在了元素定位上&#xff0c;从而失去了学习的兴趣。导致职业规划不得不半途而废~ 那么&#xff0c;今天&#xff0c;我们就使用 Katalon Stu…

深入理解CI/CD与Docker集成:自动化构建和部署的完整指南

在当今软件开发的快节奏环境中&#xff0c;自动化构建和部署是实现敏捷开发和DevOps实践的关键。Docker容器技术为这一过程引入了更高的灵活性和一致性。本文将深入研究如何将持续集成/持续部署&#xff08;CI/CD&#xff09;与Docker集成&#xff0c;提供更详细、实用的示例代…

向华为学习:基于BLM模型的战略规划研讨会实操的详细说明,含研讨表单(二)

上一篇文章&#xff0c;华研荟结合自己的经验和实践&#xff0c;详细介绍了基于BLM模型的战略规划研讨会的设计和组织流程&#xff0c;提高效率的做法。有朋友和我私信沟通说&#xff0c;其实这个流程不单单适合于BLM模型的战略规划研讨会&#xff0c;实际上&#xff0c;使用其…

v851s ssh搭建与使用

ssh 概述: 1. 用来远程登录的一种安全通道协议(常用于linux 、UNIX中); 2. 分为服务端和客户端: 1)服务端即openSSH ,一般属于目标开发板(linux中配置文件路径/etc/ssh/sshd_config); 2)客户端即登录端,常用工具:sercureCRT 、MobaXterm 、Putty等; 1. ssh 服务…

解锁数据探索新时代,JetBrains DataGrip 2023 Mac/win中文版下载

JetBrains DataGrip 2023 Mac/win&#xff0c;作为一款全新的数据库管理和开发工具&#xff0c;为数据工程师、分析师和开发人员提供了强大的功能和工具&#xff0c;帮助他们更高效地处理和分析数据。无论你是使用Mac还是Windows系统&#xff0c;都能够通过这款软件轻松驾驭数据…

springMVC 学习总结(四) 拦截器及统一异常处理

一.拦截器 1.拦截器与过滤器的区别 拦截器 Interceptor 和 过滤器 Filter类似&#xff0c;主要用于拦截用户请求并作出一定处理操作&#xff0c; 但两则也有不同之处&#xff0c;如过滤器只在Servlet前后起作用&#xff0c;是Servlet规范定义的&#xff0c;是Servlt容器才支…

CTF网络安全大赛是干什么的?发展史、赛制、赛程介绍,参赛需要学什么?

CTF&#xff08;Capture The Flag&#xff09;是一种网络安全竞赛&#xff0c;它模拟了各种信息安全场景&#xff0c;旨在提升参与者的网络安全技能。CTF 赛事通常包含多种类型的挑战&#xff0c;如密码学、逆向工程、网络攻防、Web 安全、二进制利用等。 发展史 CTF 的概念…

SpringBoot中处理处理国际化

SpringBoot中处理处理国际化 1. 创建SpringBoot项目2. resource下创建i18n目录3. 右键i18n新建资源包4. 弹框中添加需要支持的国际化语言5. messages.properties中添加需要国际化的键6. application.yaml添加配置7. 国际化工具8. 使用功能9 场景问题 1. 创建SpringBoot项目 2.…

4-Docker命令之docker diff

1.docker diff介绍 docker diff命令是用于比较一个docker容器不同版本提交的文件差异 docker diff命令会列出容器内3种文件状态变化,分别是:A-Add,D-Delete,C-Change 2.docker diff用法 docker diff container [root@centos79 ~]# docker diff --helpUsage: docker d…

条款3:尽量使用const

文章目录 const指针和函数声明const修饰指针const修饰函数const修饰容器const应用在函数中 const限定成员函数避免const重载的代码重复总结 const指针和函数声明 const修饰指针 char greeting[] "Hello"; char* p greeting; // non-const 指针,// non-const 数据…

MATLAB Sub2ind下标值转化

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言 前言 sub2ind([10,10],1,10) 10行10列 网格内第1行 第10列的数值是多少&#xff1f; 10*10的网格第一列 数值为&#xff1a;1 2 3 4 5 6 7 8 9 10&#xff1b…

Unity利用ZXing库 生成和识别二维码

ZXing 创建及识别二维码 生成二维码 目标 能够生成任意大小的二维码生成的二维码可调整背景颜色和码点的颜色生成的二维码中心可带有小Icon生成的二维码可带边框并可调整边框宽度和颜色 实现 using System.Collections.Generic; using UnityEngine; using ZXing; using ZX…