AtCoder Beginner Contest 334

B - Christmas Trees

分析:

讨论三种情况

1) l<=a<=r

2)a<l

3)a>r

虽然简单,但是坑还是有一些的

例如2的策略是,[a,r]的树 - [a,l]的树,然后要注意 l 点有没有树,如果有树的话,刚刚的操作会把 l 位置的树也减去了,那ans要加1

3)也一样

1)就简单了,记得加上a点本身的树就行

void solve() {int a, m, l, r; cin >> a >> m >> l >> r;int ans = 0;if (a < l) {ans = (r - a) / m - (l - a) / m;if ((l - a) % m == 0) ans++;}else if (a > r) {ans = (a - l) / m - (a - r) / m;if ((a - r) % m == 0) ans++;}else {ans = (r - a) / m + (a - l) / m + 1;}cout << ans;
}

C - Socks 2

这题有点难,没想到前缀和结合后缀和运用。。。

分析:完整的袜子就不用动了,怪异程度是0。我们要把不完整的k只袜子组合成k/2双袜子。

先对k个袜子进行排序

1)当k是偶数,那么相邻的两只袜子组成一双是最优策略,这很容易证明

2)当k是奇数,那么就要有一只袜子不选,剩下的 k-1只袜子组对。

选哪一只呢?暴力枚举的时间复杂度是O(n2),显然会超时。

进一步分析可以知道,一定是选在奇数位置上的袜子,(选a[i],i是奇数),这个也不证明了,比较容易想。

到底要怎么样才能在O(n)得出答案呢?

假如第i只袜子不选,我们可以知道 i之前 和 i之后 的怪异程度之和就好了。

这个可以用前缀和pre+后缀和suf实现,存怪异程度的前缀和和后缀和

第i只袜子不选的总怪异程度 = pre[i-1] + suf[i+1]

ps:后缀和的用法要牢记,博主就是在这个知识点上犯糊涂了。

假如有n个数,装在数组a里,那么suf[i] = a[n]~a[i]的后缀和,

我理解成了suf[i] = a[n]~a[n-i]的后缀和,这是错误的。

int a[N], pre[N], suf[N];void solve() {int n, k; cin >> n >> k;for (int i = 1; i <= k; i++) cin >> a[i];sort(a + 1, a + 1 + k);if (k % 2 == 0) {int ans = 0;for (int i = 2; i <= k; i += 2) {ans += a[i] - a[i - 1];}cout << ans;}else {for (int i = 2; i <= k; i += 2) {pre[i] = pre[i - 2] + (a[i] - a[i - 1]);}for (int i = k - 1; i >= 1; i-=2) {suf[i] = suf[i + 2] + (a[i + 1] - a[i]);}int ans = inf;for (int i = 1; i <= k; i += 2) {ans = min(ans, pre[i - 1] + suf[i + 1]);}cout << ans;}}

D - Reindeer and Sleigh

这题代码量虽然大,但我觉得比C简单多了。

知识点:前缀和,双指针,哈希数组

分析:一眼看出要用前缀和,O(n2)的复杂度的暴力做法很容易想到,问题是怎么在O(n)的时间复杂度里完成查询。

创建结构体存q次的查询的值,还有其查询的顺序(也就是下标)。以val排升序。

然后双指针,一个指向pre一个指向node

对了,记得开一个哈希数组存答案,因为输出是按顺序输出的

int a[N], pre[N], ans[N];
struct Node {int val, index;
}node[N];bool cmp(Node e1, Node e2) {return e1.val < e2.val;
}
void solve() {int n, q; cin >> n >> q;for (int i = 1; i <= n; i++) cin >> a[i];sort(a + 1, a + 1 + n);for (int i = 1; i <= n; i++) {pre[i] = pre[i - 1] + a[i];}for (int i = 1; i <= q; i++) {cin >> node[i].val;node[i].index = i;}sort(node + 1, node + 1 + q, cmp);pre[n + 1] = 1e18;int pn = 1, pp = 1;while (pn <= q) {if (node[pn].val < pre[pp]) {ans[node[pn].index] = pp - 1;pn++;}else {pp++;if (pp == n + 2) pp = n + 1;}}for (int i = 1; i <= q; i++) {//tans;cout << ans[i] << endl;}}

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

要学习openfoam,c++需要掌握到什么程度?

要学习openfoam&#xff0c;c需要掌握到什么程度&#xff1f; 在开始前我有一些资料&#xff0c;是我根据自己从业十年经验&#xff0c;熬夜搞了几个通宵&#xff0c;精心整理了一份「c的资料从专业入门到高级教程工具包」&#xff0c;点个关注&#xff0c;全部无偿共享给大家&…

2023年12月27日学习记录_加入噪声

目录 1、今日计划学习内容2、今日学习内容1、add noise to audio clipssignal to noise ratio(SNR)加入 additive white gaussian noise(AWGN)加入 real world noises 2、使用kaggel上的一个小demo&#xff1a;CNN模型运行时出现的问题调整采样率时出现bug 3、明确90dB下能否声…

从 Linux Crontab 到 K8s CronJob,定时任务正在经历怎样的变革

作者&#xff1a;黄晓萌(学仁) 背景 Job 表示短周期的作业&#xff0c;定时 Job 表示按照预定的时间运行Job&#xff0c;或者按照某一频率周期性的运行 Job。比如&#xff1a; 许多传统企业使用 Linux 自带的 crontab 来做定时任务的方案&#xff0c;该方案非常简单&#xff…

docker学习笔记02-安装mysql

1.安装mysql8 下载MySQL镜像 docker pull mysql:8.0创建并启动容器 docker run -itd --name mysqltest -p 9999:3306 -e MYSQL_ROOT_PASSWORD123456 mysql其中-it是交互界面 -d是后台执行 -name 指定容器名称 -p指定映射端口 -e设置环境变量 最后mysql是镜像名或者用镜像id如…

最新云渲染平台选择,云渲染避免踩坑指南

​随着云计算技术的飞速发展&#xff0c;云渲染逐步成为各类行业的优选工具&#xff0c;它凭借出色的效能和强大的并行计算能力&#xff0c;显著提高了工作效率&#xff0c;然而&#xff0c;要想充分利用云渲染技术&#xff0c;选择一款合适的云渲染平台是刻不容缓的课题&#…

一种删除 KubeSphere 中一直卡在 Terminating 的 Namespace--KubeSphere Logging System的简单方法

文章目录 一、问题提出二、删除方法1&#xff0c;获取kubesphere-logging-syste的详细信息json文件2&#xff0c;编辑kubesphere-logging-system.json3&#xff0c;执行清理命令 三、检查结果 一、问题提出 在使用 KubeSphere 的时候发现有一个日志服务KubeSphere Logging Sys…

React快速入门之交互性

响应事件 创建事件处理函数 处理函数名常以handle事件名命名 function handlePlayClick() {alert(Playing);}传递事件处理函数 函数名、匿名两种方式&#xff01; function PlayButton() {function handlePlayClick() {alert(Playing);}return (<Button handleClick{handl…

网站显示不安全警告怎么办?消除网站不安全警告超全指南

网站显示不安全警告怎么办&#xff1f;当用户访问你的网站&#xff0c;而您的网站没有部署SSL证书实现HTTPS加密时&#xff0c;网站就会显示不安全警告&#xff0c;这种警告&#xff0c;不仅有可能阻止用户继续浏览网站&#xff0c;影响网站声誉&#xff0c;还有可能影响网站在…

Android 8.1 设置USB传输文件模式(MTP)

项目需求&#xff0c;需要在电脑端adb发送通知手机端接收指令&#xff0c;将USB的仅充电模式更改成传输文件&#xff08;MTP&#xff09;模式&#xff0c;便捷用户在我的电脑里操作内存文件&#xff0c;下面是我们的常见的修改方式 1、android12以下、android21以上是这种方式…

纸质版表格怎么用扫描仪转换成电子版表格

要将纸质版表格转换成电子版表格&#xff0c;可以使用以下步骤&#xff1a; 1、准备一台物理扫描仪并与电脑连接好&#xff0c;并安装好驱动。 2、打开安装好的金鸣表格文字识别电脑客户端。 3、点击“扫描文件”&#xff0c;在弹出的对话框中选中需要使用的扫描仪。 4、点击“…

法线贴图可以实现什么样的3D效果

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 在 3D 建模中&#xff0c;曲面由多边形表示。照明计算是基于这些多边…

成考生必看!2023年成人高考录取后入学拿证流程

成人高考录取后并不是就可以坐等拿证了&#xff01; 成人高考录取后你还有这些事情要做。 一起来了解一下吧&#xff01; 成人高考入学到拿证流程 办理入学流程 1.入学时间 确认被高校录取后&#xff0c;12月下旬左右开始办理入学(实际时间以各院校安排为准&#xff09; 2.缴…

【28】Kotlin语法进阶——使用协程编写高效的并发程序

提示&#xff1a;此文章仅作为本人记录日常学习使用&#xff0c;若有存在错误或者不严谨得地方欢迎指正。 文章目录 一、Kotlin中的协程1.1 协程的基本用法1.1.1协程与协程作用域1.1.2 使用launch函数创建子协程1.1.3 通过suspend关键声明挂起函数1.1.4 coroutineScope函数 1.2…

Arduino串口测试

目录 一、硬件介绍 1、控制器 2、TTL转USB串口 二、软件程序 1、单片机发送字符串 &#xff08;1&#xff09;每个串口对应的类名称介绍 &#xff08;2&#xff09;发送功能 &#xff08;3&#xff09;代码 &#xff08;4&#xff09;测试 2、单片机接收字符串 &…

鸿蒙开发之android对比开发《基础知识》

基于华为鸿蒙未来可能不再兼容android应用&#xff0c;推出鸿蒙开发系列文档&#xff0c;帮助android开发人员快速上手鸿蒙应用开发。 1. 鸿蒙使用什么基础语言开发&#xff1f; ArkTS是鸿蒙生态的应用开发语言。它在保持TypeScript&#xff08;简称TS&#xff09;基本语法风…

记录 | ubuntu源码编译python3.7.3(指定版本)

一、安装依赖包 sudo apt-get install -y make build-essential libssl-dev zlib1g-dev sudo apt-get install -y libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm sudo apt-get install -y libncurses5-dev libncursesw5-dev xz-utils tk-dev 二、从Python网…

二叉树数据结构:深入了解二叉树的概念、特性与结构

在探索栈和队列之后&#xff08;大家可以移步至我的数据结构专栏&#xff09;&#xff1a;T-rLN的数据结构专栏 我们转向了更为复杂而有趣的数据结构——二叉树。本文将引领我们进入二叉树的世界&#xff0c;从最基本的概念和结构开始&#xff0c;逐步深入了解二叉树的顺序结构…

听GPT 讲Rust源代码--src/tools(30)

File: rust/src/tools/clippy/clippy_lints/src/casts/cast_slice_from_raw_parts.rs 在Rust源代码中&#xff0c;cast_slice_from_raw_parts.rs文件位于rust/src/tools/clippy/clippy_lints/src/casts/目录下&#xff0c;它是Clippy工具中的一个lint&#xff0c;用于检查通过f…

【技巧】7z分卷压缩文件如何解压?

7z分卷压缩格式是一种常用的文件压缩格式&#xff0c;可以在压缩文件时将文件分割成多个独立的文件&#xff0c;更方便储存或者传输。那压缩好的7z分卷文件要如何解压呢&#xff1f;不清楚的小伙伴一起来看看吧。 想要解压7z分卷压缩文件&#xff0c;需要用到支持7z格式的解压…

Springboot拦截器及统一异常处理

文章目录 一、Java中异常相关概念1、异常类2、异常处理方法3、注意事项4、自定义异常 二、配置全局异常处理1、统一返回体定义2、定义异常处理实现类3、全局异常处理类 三、Springboot拦截器1、定义拦截器2、注册拦截器 四、验证效果 一、Java中异常相关概念 1、异常类 Throw…