Codeforces Round 909 (Div. 3) 题解 A-E

A - Game with Integers

原题链接

题目描述
给定一个整数NAB都可以对这个整数进行加一或者减一操作,从A开始,如果A可以让N3整除,那么A获胜,如果10步之内A没有获胜,那么B获胜。

思路:思维

  • 如果N3的倍数,那么A永远无法获胜,否则AN进行加一或者减一则必胜。
public static void solve() throws IOException{int n = readInt();if (n % 3 == 0) {printWriter.println("Second");} else {printWriter.println("First");}
}

B - 250 Thousand Tons of TNT

原题链接

题目描述
N个箱子从左到右排成一排,第i个箱子重 a i a_i ai 吨。现在你可以使用K辆卡车,从左到右依次将箱子装入卡车,但是每辆卡车上装入的箱子数量必须一致,但是你想让这K辆卡车的其中两辆卡车所装货物重量之差尽可能大,求出这个最大差值。

思路:前缀和+枚举

  • 先枚举每辆卡车所装箱子的数量:只需要枚举数量为 1 ≤ i ≤ n 2 1 \leq i \leq \frac{n}{2} 1i2n 的箱子,因为数量大于 n 2 \frac{n}{2} 2n后方案肯定不可行,数量为 n n n时结果肯定为 0 0 0
  • 再枚举每辆卡车所装箱子的重量之和,求出最大差值。
public static void solve() throws IOException{int n = readInt();int[] arr = new int[n + 1];for (int i = 1; i <= n; i++) {arr[i] = readInt();}long[] pre = new long[n + 1];for (int i = 1; i <= n; i++) {pre[i] = pre[i - 1] + arr[i];}long res = 0;for (int i = 1; i <= n / 2; i++) { // 枚举每辆卡车上的箱子数量if (n % i == 0) {long curMax = Long.MIN_VALUE, curMin = Long.MAX_VALUE;for (int j = i; j <= n; j += i) { // 枚举每辆卡车上的箱子重量之和curMax = Math.max(pre[j] - pre[j - i], curMax);curMin = Math.min(pre[j] - pre[j - i], curMin);}res = Math.max(curMax - curMin, res);}}printWriter.println(res);
}

C - Yarik and Array

原题链接

题目描述
有一个长度为n的数组a,你需要找出一个子数组,且其中的元素都是奇偶相邻的,并且这个子数组的和最大,请求出这个最大和。

思路:动态规划

  • dp数组的定义为:以第i个元素结尾所能构成的最大子数组的和。
public static void solve() throws IOException{int n = readInt();int[] arr = new int[n + 1];for (int i = 1; i <= n; i++) arr[i] = readInt();int[] dp = new int[n + 1];dp[1] = arr[1];for (int i = 2; i <= n; i++) {// 奇偶性不同,在取前面的元素和不取前面元素中得最大值if ((arr[i - 1] & 1) != (arr[i] & 1)) {dp[i] = Math.max(arr[i], dp[i - 1] + arr[i]);} else {// 奇偶性相同,那么以第 i个元素结尾所能构成的最大子数组的和只能是arr[i]本身dp[i] = arr[i];}}int max = Integer.MIN_VALUE;for (int i = 1; i <= n; i++) {max = Math.max(max, dp[i]);}printWriter.println(max);
}

D - Yarik and Musical Notes

原题链接

题目描述
有一个长度为n的数组a和数组b,数组b的每个元素为 2 a i 2^{a_i} 2ai,你需要找出总共有多少对 b i b j = b j b i ( i ≤ j ) b_i^{b_j} = b_j^{b_i}(i \leq j) bibj=bjbi(ij)

思路:组合数学

  • 原式为 2 a i 2 a j = 2 a j 2 a i 2^{a_i^{2^{a_j}}} = 2^{a_j^{2^{a_i}}} 2ai2aj=2aj2ai a i ∗ 2 a j = a j ∗ 2 a i a_i * 2^{a_j} = a_j * 2^{a_i} ai2aj=aj2ai,再得 a i a j = 2 a j − a i \frac{a_i}{a_j} = 2^{a_j - a_i} ajai=2ajai,那么 ① a i = a j a_i = a_j ai=aj a i = 1 , a j = 2 a_i=1,a_j=2 ai=1,aj=2 a i = 2 , a j = 1 a_i=2,a_j=1 ai=2,aj=1,最后进行组合计数即可。
public static void solve() throws IOException{int n = readInt();Map<Integer, Long> map = new HashMap<>();for (int i = 1; i <= n; i++) {int a = readInt();map.put(a, map.getOrDefault(a, 0l) + 1);}long res = 0;for (Long val : map.values()) {res += val * (val - 1) / 2;// 情况一}// 情况二和三res += (map.getOrDefault(1, 0l) * map.getOrDefault(2, 0l));printWriter.println(res);
}

E - Queue Sort

原题链接

题目描述
给定一个长度为n的数组a,你需要将其变为不递减数组。你可以进行以下操作多次:将第一个元素移至数组末尾,再将这个元素与其前面的元素对比,直至该元素严格大于他前面的元素或者成为第一个元素。如果无法将该数组变为不递减数组,输出-1,否则输出将其变为不递减数组的最少操作数。

思路:观察

  • 观察可得,如果数组中最小的元素后面出现了降序的情况,那么永远无法将数组变为不递减数组,否则输出最小的元素前面有多少个比它大的元素。
public static void solve() throws IOException{int n = readInt();int min = Integer.MAX_VALUE; // 数组中的最小元素int[] arr = new int[n];for (int i = 0; i < n; i++) {arr[i] = readInt();min = Math.min(min, arr[i]);}int idx = 0;// 数组中的最小元素第一次出现的位置for (int i = 0; i < n; i++) {if (arr[i] == min) {idx = i;break;}}boolean f = true;// 最小元素后面是否不递减for (int i = idx + 1; i < n; i++) {if (arr[i] < arr[i - 1]) {// 出现降序f = false;break;}}if (!f) {printWriter.println(-1);} else {int cnt = 0; // 最小的元素前面有多少个比它大的元素for (int i = 0; i < n; i++) {if (arr[i] > min) {cnt++;} else {break;}}printWriter.println(cnt);}
}

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

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

相关文章

2023.11.18 - hadoop之zookeeper分布式协调服务

1.zookeeper简介 ZooKeeper概念: Zookeeper是一个分布式协调服务的开源框架。本质上是一个分布式的小文件存储系统 ZooKeeper作用: 主要用来解决分布式集群中应用系统的一致性问题。 ZooKeeper结构: 采用树形层次结构&#xff0c;没有目录与文件之分,ZooKeeper树中的每个节点被…

防止显卡掉卡的一种方法:nvidia-smi -pm 1

背景 服务器较老&#xff0c;里面的显卡在使用一段时间后会出现掉卡现象 解决方法 在终端输入&#xff1a;nvidia-smi -pm 1 nvidia-smi -pm 1是用于在NVIDIA GPU上启用持久性模式的命令。 NVIDIA GPU的持久性模式是一种能够保持 GPU 在全功率状态下运行的设置。通常情况下…

阿里巴巴java开发手册-编程规约

编程规约 命名风格常量定义代码格式OOP 规约日期时间集合处理并发处理控制语句注释规约前后端规约其他 命名风格 【强制】代码中的命名均不能以下划线或美元符号开始&#xff0c;也不能以下划线或美元符号结束。 反例&#xff1a;_name / name / n a m e / n a m e / n a m e…

Linux下安装部署redis(离线模式)

一、准备工作 1.下载redis的安装包 下载地址&#xff1a;Index of /releases/ 大家可以自行选择redis的版本&#xff0c;笔者选择的是最新的 2.上传到服务器 前提是我先在服务器上创建了一个目录redis7.2.3&#xff0c;我直接上传到这个目录下 二、安装redis 1.解压redis t…

Cloud

Spring Cloud 是基于 Spring Framework 构建的一套分布式系统开发工具集&#xff0c;旨在简化分布式系统的开发。它提供了一系列的组件和工具&#xff0c;帮助开发者快速搭建分布式系统中的常见模块&#xff0c;例如服务注册与发现、配置中心、断路器、网关等。以下是我对 Spri…

uniapp 跨页面传值及跨页面方法调用

uniapp 跨页面传值及跨页面方法调用 1、跨页面传值 使用全局方法监听uni.$emit、uni.$on、uni.$off 发布、监听、移除 methods: {addFun(){let data [1]uni.navigateBack({ // 返回上一页delta: 1})uni.$emit(successFun,{data}) // 传值} }监听页 onLoad() {uni.$on(succ…

RIP路由信息协议

RIP路由信息协议(Routing Information Protocol) 最先得到广泛应用的协议&#xff0c;最大优点是简单要求网络中的每个路由器都要维护一张表&#xff0c;表中记录了从它自己到其他每一个目的网络的距离RIP是应用层协议&#xff0c;它在传输层使用UDP&#xff0c;RIP报文作为UD…

ceph 常用命令

bucket 常用命令 查看 realm &#xff08;区域&#xff09; radosgw-admin realm list输出 {"default_info": "43c462f5-5634-496e-ad4e-978d28c2x9090","realms": ["myrgw"] }radosgw-admin realm get{"id": "2cfc…

7.docker部署前端vue项目,实现反向代理配置

介绍&#xff1a; 构建镜像&#xff1a;通过docker构建以nginx为基础的镜像&#xff0c;将vue项目生成的dist包拷贝至nginx目录下&#xff0c;.conf文件做反向代理配置&#xff1b;部署服务&#xff1a;docker stack启动部署服务&#xff1b; 通过执行两个脚本既可以实现构建…

[Linux版本Debian系统]安装cuda 和对应的cudnn以cuda 12.0为例

写在前面 先检查自己有没有安装使用wget的命令&#xff0c;没有的话输入下面命令安装&#xff1a; apt-get install wget -y查看gcc的安装 sudo apt install gcc #安装gcc gcc --version #查看gcc是否安装成功 #若上述命令不成功使用下面的命令尝试之后再执行上面…

算法通关村第十关-白银挑战数组最大K数

大家好我是苏麟 , 今天带来一道应用快排的题 . 数组中的第K个最大元素 描述 : 给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。 请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。 题目 : Le…

《卡拉马佐夫兄弟》人物表

《卡拉马佐夫兄弟》人物表 重要人物表 费奥多尔巴甫洛维奇卡拉马佐夫——地主。费多尔巴甫洛维奇 德米特里&#xff08;米特里、米嘉、米剑卡&#xff09;费奥多罗维奇卡拉马佐夫——长子。 伊万费奥多罗维奇卡拉马佐夫——次子。伊凡费多罗维奇&#xff0c;。 阿列克塞&#…

ts学习02-数据类型

新建index.html <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </h…

【P1008 [NOIP1998 普及组] 三连击】

[NOIP1998 普及组] 三连击 题目背景 本题为提交答案题&#xff0c;您可以写程序或手算在本机上算出答案后&#xff0c;直接提交答案文本&#xff0c;也可提交答案生成程序。 题目描述 将 1 , 2 , … , 9 1, 2, \ldots , 9 1,2,…,9 共 9 9 9 个数分成 3 3 3 组&#xff…

OpenCV快速入门:绘制图形、图像金字塔和感兴趣区域

文章目录 前言一、绘制图形1. 绘制直线2. 绘制圆3. 绘制矩形4. 绘制椭圆5. 绘制多边形6. 绘制文字7. 可选参数8. 手工绘制OpenCV的logo 二、图像金字塔1. 高斯金字塔2. 拉普拉斯金字塔 三、感兴趣区域&#xff08;ROI&#xff09;数组切片方式OpenCV截取方式 总结 前言 OpenCV…

Docker与Kubernetes结合的难题与技术解决方案

文章目录 1. **版本兼容性**技术解决方案 2. **网络通信**技术解决方案 3. **存储卷的管理**技术解决方案 4. **安全性**技术解决方案 5. **监控和日志**技术解决方案 6. **扩展性与自动化**技术解决方案 7. **多集群管理**技术解决方案 结语 &#x1f388;个人主页&#xff1a…

Swagger(3):Swagger入门案例

1 编写SpringBoot项目 新建一个Rest请求控制器。 package com.example.demo.controller;import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.Reques…

C++20并发编程之线程闩(std::latch)和线程卡(std::barrier)

std::latch std::latch类是一种基于std::ptrdiff_t类型的倒计数器&#xff0c;可用于同步线程。计数器的值在创建时进行初始化。线程可以在 latch 上阻塞&#xff0c;直到计数器减少到零为止。无法增加或重置计数器&#xff0c;这使得 latch 成为一次性的屏障。 std::latch的成…

JS原型对象prototype

让我简单的为大家介绍一下原型对象prototype吧&#xff01; 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定&#xff0c;每一个构造函数都有一个 prototype 属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象…

2023NOIP游寄

停课停了一个月&#xff0c;考炸了就真的寄了。 DAY -2 模拟赛出人意外的简单&#xff0c;信心赛吗&#xff1f; 开局30s切了T1。总共做出三题&#xff0c;但挂了 150pts。难绷。 直接没有信心了。 DAY -1 晚上直接跑路回家&#xff0c;表示&#xff1a;休息一天。 DAY …