Atcoder Beginner Contest353 A~E题解

文章目录

  • [A - Buildings](https://atcoder.jp/contests/abc353/tasks/abc353_a)
  • [B - AtCoder Amusement Park](https://atcoder.jp/contests/abc353/tasks/abc353_b)
  • [C - Sigma Problem](https://atcoder.jp/contests/abc353/tasks/abc353_c)
  • [D - Another Sigma Problem](https://atcoder.jp/contests/abc353/tasks/abc353_d)
  • [E - Yet Another Sigma Problem](https://atcoder.jp/contests/abc353/tasks/abc353_)

A - Buildings

题目:
给一个数组H,从左往右找比第一个元素大的元素下标

思路:
模拟

static void solve() throws IOException {int n = pInt();int[] a = pIntArray(1);int t = a[1];for (int i = 2; i < a.length; i ++) {if (a[i] > t) {out.println(i);return;}}out.println(-1);
}

B - AtCoder Amusement Park

题目:
有一个最多容纳K个人的演出,有N组人在排队,第i组人有Ai 个人,要求每次放一组人进去且总人数不能超过K个人,当无法继续放入时开始演出,接着继续放人进入,直到没人排队为止,求开始演出的次数

思路:
模拟

static void solve() throws IOException {int[] ins = pIntArray(0);int n = ins[0], k = ins[1];int[] a = pIntArray(0);int ans = 0, cur = 0;for (int i = 0 ; i < n; i ++) {if (cur + a[i] > k) {cur = 0;ans ++;}cur += a[i];}if (cur > 0) ans ++;out.println(ans);
}

C - Sigma Problem

题目:
定义 f ( x , y ) = ( x + y ) m o d 1 0 8 f(x,y) = (x+y) \mod 10^8 f(x,y)=(x+y)mod108 ,给一个正整数序列A,求 ∑ i = 1 N − 1 ∑ j = i + 1 N f ( A i , A j ) \sum^{N-1}_{i=1} \sum^{N}_{j=i+1}f(A_i, A_j) i=1N1j=i+1Nf(Ai,Aj)

思路:
观察发现A的顺序任意交换不会影响最后的结果,而f相当于x+y大于等于1e8的时候就会减去1e8,题目的数据Ai<1e8就意味着x+y<2e8,最多减去一次1e8;
先进行排序,对于每个元素x,通过二分找到使得x+y>=1e8的第一个y,此时y右边的所有数加上x都会大于等于1e8,那么就需要减去这些元素的个数*1e8

static void solve() throws IOException {final long mod = (long) 1e8;int n = pInt();int[] a = pIntArray(0);long ans = 0;Arrays.sort(a);for (int i = 0; i < n; i ++) {ans += (long) a[i] * (n - 1);int l = i + 1, r = n - 1;while (l < r) {int mid = l + r >> 1;if (a[i] + a[mid] >= mod) {r = mid;} else {l = mid + 1;}}if (l < n && a[i] + a[l] >= mod) {ans -= (n - l) * mod;}}out.println(ans);
}

D - Another Sigma Problem

题目:
给一个整数序列A,定义 f ( x , y ) f(x,y) f(x,y) 为将x和y前后拼接成的整数,求 ∑ i = 1 N − 1 ∑ j = i + 1 N f ( A i , A j ) \sum^{N-1}_{i=1} \sum^{N}_{j=i+1}f(A_i, A_j) i=1N1j=i+1Nf(Ai,Aj),结果对998244353取模

思路:
仔细观察其实可以发现,每个数x作为前面一部分的时候,相当于x*10^(y的位数)+y;
如何统计10^(y的位数)这一部分呢,二重循环是会超时的;但是可以从最后一个开始统计;

static void solve() throws IOException {final long mod = 998244353;int n = pInt();long[] a = pLongArray(0);long ans = 0;long count = 0, sum = 0;for (int i = n - 1; i >= 0; i --) {ans = (ans + a[i] * count % mod + sum % mod) % mod;long t = a[i], cnt = 0;while (t > 0) {cnt ++;t /= 10;}sum += a[i];count += (long) Math.pow(10, cnt);}out.println(ans % mod);
}

E - Yet Another Sigma Problem

题目:
定义 f ( x , y ) f(x,y) f(x,y)为两个字符串x和y的最长公共前缀的长度 ,给一个字符串数组S,求 ∑ i = 1 N − 1 ∑ j = i + 1 N f ( S i , S j ) \sum^{N-1}_{i=1} \sum^{N}_{j=i+1}f(S_i, S_j) i=1N1j=i+1Nf(Si,Sj)

思路:
用字典树实现记录前缀,也就是每个点都多少个字符串经过,最后统计这些点构成的公共前缀对答案的贡献度即可;
比如adabcabda点经过3次,b点经过2次,分别的贡献度为3和1

static Map<Integer, Integer> map = new HashMap<>();
static class Trie {int[][] p = new int[26][(int) (3e5 + 5)];int idx = 0;{for (int i = 0; i < 26; i ++) {Arrays.fill(p[i], -1);}}void insert(String s) {int n = s.length();int cur = 0;for (int i = 0; i < n; i ++) {int t = s.charAt(i) - 'a';if (p[t][cur] == -1) {p[t][cur] = ++ idx;}cur = p[t][cur];map.compute(cur, (k, v) -> v == null ? 1 : v + 1);}}
}
static void solve() throws IOException {int n = pInt();String[] ins = pStringArray();Trie root = new Trie();long ans = 0;for (int i = 0; i < n; i ++) {root.insert(ins[i]);}for (int v : map.values()) {ans += (long) v * (v - 1) / 2;}out.println(ans);
}

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

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

相关文章

MVC:一种设计模式而非软件架构

在软件开发领域&#xff0c;MVC&#xff08;Model-View-Controller&#xff09;经常被提及&#xff0c;但很多人对其定位存在误解。本文将澄清一个常见的误区&#xff1a;MVC是一种设计模式&#xff0c;而非软件架构。 一、MVC简介 MVC&#xff0c;即模型&#xff08;Model&a…

24寸2K显示器 - HKC G24H2

&#x1f525;&#x1f5a5;️ 嘿&#xff0c;大家好&#xff01;今天&#xff0c;我要给大家介绍一款超棒的显示器——HKCG24H2&#xff01;这款显示器可是个全能选手&#xff0c;无论你是工作狂人还是游戏迷&#xff0c;它都能满足你的需求&#xff01; &#x1f60e;&#x…

ICode国际青少年编程竞赛- Python-2级训练场-基础训练3

ICode国际青少年编程竞赛- Python-2级训练场-基础训练3 1、 d Item.x - Dev.x Dev.step(d)2、 d Spaceship.x - Item.x Spaceship.step(d)3、 d Item.y - Dev.y Dev.step(d)4、 for i in range(4):Spaceship.step(2)d Item[i].x - Dev.xDev.step(d)Dev.step(-d)5、…

VMware 不能拍摄快照

问题&#xff1a; 拍摄快照后&#xff0c;会出现这个弹窗&#xff0c;然后虚拟机就直接自动退出了&#xff0c;还会弹出一个框&#xff1a; 解决方法&#xff1a; 我用的是 window11 和 VMware16.0.0 这是因为VM16与window11&#xff0c;二者之间版本不兼容问题&#xff0c;可…

【CTF Web】XCTF GFSJ0477 backup Writeup(备份文件+源码泄漏+目录扫描)

backup X老师忘记删除备份文件&#xff0c;他派小宁同学去把备份文件找出来,一起来帮小宁同学吧&#xff01; 解法 使用 dirsearch 扫描目录。 dirsearch -u http://61.147.171.105:49361/下载&#xff1a; http://61.147.171.105:64289/index.php.bak打开 index.php.bak&am…

西蓝花病害检测(yolov8模型,从图像、视频和摄像头三种路径识别检测,包含登陆页面、注册页面和检测页面)

1.基于最新的YOLOv8训练的西蓝花病害检测模型&#xff0c;和基于PyQt5制作的可视化西兰花病害检测系统&#xff0c;包含登陆页面、注册页面和检测页面&#xff0c;该系统可自动检测和识别图片或视频当中出现的三类西兰花病害&#xff1a;Downy Mildew, Black Rot, Bacterial Sp…

vuex核心概念-mutations

目录 一、mutations基本认知 二、mutations的基本使用 三、mutations传参语法 四、注意 五、辅助函数&#xff1a;mapMutations 一、mutations基本认知 目标&#xff1a;明确vuex同样遵循单向数据流&#xff0c;组件中不能直接修改仓库的数据。 通过 strict:true可以开启…

Hamon Odyssey

Hamon Odyssey Hamon Odyssey 题解解题思路&#xff1a;核心代码&#xff08;套个main函数就完事了&#xff09;Hamon Odyssey Hamon Odyssey 题解 CF原题&#xff0c;洛谷原题 拓(一定要看呐!)&#xff1a; & 的详解 解题思路&#xff1a; 先将所有数&&#xff0c;结…

Linux —— 信号(4)

Linux —— 信号&#xff08;4&#xff09; 信号的处理用户态和内核态 信号的捕捉sigaction sa_mask字段volatileSIGCHLD信号 我们今天接着来看信号&#xff1a; 信号的处理 信号的处理简单一句话就是在内核态处理的。 用户态和内核态 用户态和内核态是操作系统和计组中的概…

最新版Ceph( Reef版本)文件存储简单对接k8s(下集)

假如ceph集群已经创建 1.创建cephfs_pool存储池 ceph osd pool create fs_kube_data 16 162.创建cephfs_metadata存储池 ceph osd pool create fs_kube_metadata 16 163 创建cephfs ceph fs new cephfs01 fs_kube_metadata fs_kube_data4 设置最大活动数 ceph fs set cephfs01…

GraphQL在现代Web应用中的应用与优势

GraphQL是一种现代的API查询语言&#xff0c;它在现代Web应用中得到了广泛的应用&#xff0c;因为它提供了一种高效、灵活且强大的方式来获取数据 GraphQL基础快速应用示例&#xff1a; 1. 后端设置&#xff08;使用graphql-yoga&#xff09; 首先&#xff0c;我们需要创建一…

fatal: fetch-pack: invalid index-pack output

解决方案&#xff1a;git clone --depth1 要克隆的git地址 下载最近一次提交的代码 其他分支的内容都不下载 这样整体下载体量就变小了 执行命令&#xff1a;git clone --depth 1 https://gitlab.scm321.com/ufx/xxxx.git

android 蓝牙技术 学习记录

一 。蓝牙介绍 蓝牙可以分为 经典蓝牙-----》传统蓝牙(BT 1.0/2.0/2.1)和高速蓝牙(BT3.0) 低功耗蓝牙 ----》BLE(BLE 4.0/4.1/4.2/5.0./5.1/5.2)和 Bluetooth Mesh 关于蓝牙协议。除开Mesh大致可以分为3层: App:上层协议有很多,例如ANP,HOGP,FTMP 等等 host:中…

Mac idea gradle解决异常: SSL peer shut down incorrectly

系统&#xff1a;mac 软件&#xff1a;idea 解决异常: SSL peer shut down incorrectly 查看有没有安装 gradle -v安装 根据项目gradle提示安装版本 brew install gradle7idea的配置 在settings搜索gradle&#xff0c;配置Local installation&#xff0c;选择自己的安装目录…

机器学习入门到放弃2:朴素贝叶斯

1. 算法介绍 1.1 算法定义 朴素贝叶斯分类&#xff08;NBC&#xff09;是以贝叶斯定理为基础并且假设特征条件之间相互独立的方法&#xff0c;先通过已给定的训练集&#xff0c;以特征词之间独立作为前提假设&#xff0c;学习从输入到输出的联合概率分布&#xff0c;再基于学习…

【Java代码审计】越权篇

【Java代码审计】越权篇 越权漏洞概述 越权漏洞概述 失效的访问控制是指未对通过身份验证的用户实施恰当的访问控制。攻击者可以利用这些缺陷访问未经授权的功能或数据&#xff0c;例如访问其他用户的账户、查看敏感文件、修改其他用户的数据、更改访问权限等。业界常将典型的…

YOLOv9独家改进系列-可改变核卷积

一、改进点介绍 AKConv是一种具有任意数量的参数和任意采样形状的可变卷积核,对不规则特征有更好的提取效果。 论文速览::AKConv是2023年11月发表的一种可变卷积核,赋予卷积核任意数量的参数和任意采样形状,以解决具有固定样本形状和正方形的卷积核不能很好地适应…

物联网SCI期刊,潜力新刊,审稿速度快,收稿范围广泛!

一、期刊名称 Internet of Things 二、期刊简介概况 期刊类型&#xff1a;SCI 学科领域&#xff1a;物联网 影响因子&#xff1a;5.9 中科院分区&#xff1a;3区 出版方式&#xff1a;订阅模式/开放出版 版面费&#xff1a;选择开放出版需支付$2310 三、期刊征稿范围 I…

PTP 对时协议 IEEE1588 网络对时 计算原理

前言 本文将阐述 PTP 对时协议的原理&#xff0c;slave 节点如何根据获取的时间来纠正和更新自己的时间。 协议概述 整个通讯过程中会发送 4 种类型的数据包&#xff0c;用来支撑对时。下面是 4 个包的解释 Sync message: 由 master 发送&#xff0c;发起对时事务, slave 接…

Java - Json字符串转List<LinkedHashMap<String,String>>

需求&#xff1a;在处理数据时&#xff0c;需要将一个Object类型对象集合转为有序的Map类型集合。 一、问题 1.原代码&#xff1a; 但在使用时出现报错&#xff1a; Incompatible equality constraint: LinkedHashMap<String, String> and LinkedHashMap 不兼容的相等…