B. The Walkway - 思维

news2024/11/16 19:49:03

 

 

 分析:

        补题, 首先大体思路就是先算一遍没改变任何点时能够买到的物品,这一步可以通过看两点之间距离,之间能够包含几个d就说明会需要买几次物品,对于两侧边界,可以将左侧设置为1 - d, 因为此时可以计算第一个到1之间需不需要买,最后一个数设置为n + 1,就可以计算最后一个点到离开之间需不需要买,可以认为找的两点之间的距离是包括前一个点不包括后一个点的,这样每次只会处理一个点。然后枚举每一个点,判断移动这个点会产生什么影响,a = (s[i] - s[i - 1] - 1) / d也就是这个点到前一个点的距离之间需要买几次,b = (s[i + 1] - s[i] - 1) / d是这个点的后一个点到这个点的距离之间需要买几次,c = (s[i + 1] - s[i - 1] - 1) / d是不看这个点看两侧的点之间需要买几次,也就是移动这个点后的买的次数,用c - (a + b)就可以得到移动当前的点会产生的变化差值,然后总的买的次数还需要加上剩余的m - 1个点,对每一个得到的答案都取最小值,在找到有多少个最小值,就可以得出答案。

代码:

#include <bits/stdc++.h>

using namespace std;
using ll = long long;

typedef pair<int, int> pii;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int T;
    cin >> T;
    while(T --) {
        ll n, d;
        int m;
        cin >> n >> m >> d;
        vector<int> s(m + 2);
        s[0] = 1 - d;
        s[m + 1] = n + 1;
        for(int i = 1; i <= m; i ++) cin >> s[i];
        int sum = 0;
        for(int i = 1; i <= m + 1; i ++) {
            sum += (s[i] - s[i - 1] - 1) / d;
        }
        int ans = n + 1;
        int cnt = 0;
        for(int i = 1; i <= m; i ++) {
            int t = sum;
            int a = (s[i] - s[i - 1] - 1) / d;
            int b = (s[i + 1] - s[i] - 1) / d;
            int c = (s[i + 1] - s[i - 1] - 1) / d;
            t += (c - (a + b));
            t += (m - 1);
            if(ans > t) {
                ans = t;
                cnt = 1;
            }
            else if(ans == t) cnt ++;
        }
        cout << ans << ' ' << cnt << '\n';
    }
}

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

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

相关文章

SAP动态安全库存简介

动态安全库存:跑需求计划时,ERP系统按设置的库存方式自动计算出满足一定时间内可保障生产的库存数量 SAP动态安全库存的计算公式:动态安全库存=平均日需求*覆盖范围。 平均日需求=特定时期内的总需求/特定时期内的工作天数 覆盖范围指在没又货物供应的情况下,库存可以维…

arm:day4

1. 实现三盏灯的点亮 .text .global _start_start: led1初始化函数LED_INIT: 1 通过RCC_AHB4_ENSETR寄存器&#xff0c;设置GPIOE F组控制器使能 0x50000A28[5:4]1ldr r0,0X50000A28ldr r1,[r0]orr r1,r1,#(0X3<<4)str r1,[r0] 2.1 通过GPIOE_MODER寄存器&#xff0c;…

UNIQUE VISION Programming Contest 2023 Summer(AtCoder Beginner Contest 312)F题题解

文章目录 [Cans and Openers](https://atcoder.jp/contests/abc312/tasks/abc312_f)问题建模问题分析1.分析每种物品的优先级2.分析最终选取物品与每种物品的关系代码 Cans and Openers 问题建模 给定n个物品&#xff0c;物品里有三种&#xff0c;第一种可以直接选取&#xff…

VGG分类实战:猫狗分类

关于数据集 数据集选择的是Kaggle上的Cat and Dog&#xff0c;猫狗图片数量上达到了上万张。你可以通过这里进入Kaggle下载数据集Cat and Dog | Kaggle。 在我的Github仓库当中也放了猫狗图片各666张。 VGG网络 VGG的主要特点是使用了一系列具有相同尺寸 3x3 大小的卷积核进…

Dodaf架构的学习分享

一.Dodaf的内容 Dodaf的背景 DODAF&#xff08;Department of Defense Architecture Framework&#xff09;起源于美国国防部&#xff0c;是一个用于支持复杂系统设计、规划和实施的架构框架。以下是DODAF的背景和起源&#xff1a; 复杂系统需求&#xff1a;在军事和国防领域&…

VS2019生成的DLL,给QT(MinGW版本)使用的小结

VS2019端&#xff1a; a 基于生成一个DLL的工程&#xff08;要注意生成是x86&#xff0c;还是x64的&#xff0c;需要和后面的QT的App工程对应&#xff09;&#xff0c;这里不多解释了&#xff0c;网上多的是&#xff1b; b 在cpp实现文件里&#xff0c;假如要导出一个这样的…

Vue 项目运行 npm install 时,卡在 sill idealTree buildDeps 没有反应

解决方法&#xff1a;切换到淘宝镜像。 以下是之前安装的 xmzs 包&#xff0c;用于控制切换淘宝镜像。 该截图是之前其他项目切换淘宝镜像的截图。 切换镜像后&#xff0c;顺利执行 npm install 。

图数据库_Neo4j学习cypher语言_使用CQL命令002_删除节点_删除属性_结果排序Order By---Neo4j图数据库工作笔记0006

然后我们再来看如何删除节点 可以看到首先 我们这里 比如我要删除张三 可以看到 match (n:student) where n.name = "张三" delete n 这样就是删除了student集合中,name是张三的节点 然后我们再来看 如何来删除关系 match (n:student)-[r]->(m:student) where…

视频监控集中存储如何做?它的难点在哪?

视频监控集中存储是指将多个视频监控摄像头所捕捉到的视频信号集中存储于一个中央设备&#xff0c;这个中央设备可以是服务器、网络存储设备或其他专用设备。通过集中存储&#xff0c;可以避免因为存储设备分散而导致的管理不便和难以有效地管理和检索视频数据&#xff0c;同时…

【ES6】—使用 const 声明

一、不属于顶层对象window 使用const关键字 声明的变量&#xff0c;不会挂载到window属性上 const a 5 console.log(a) console.log(window.a) // 5 // undefined二、不允许重复声明 使用const关键字不允许重复声明相同的变量 cosnt a 5 cosnt a 6 // Uncaught SyntaxEr…

prompt-engineering-note(面向开发者的ChatGPT提问工程学习笔记)

介绍&#xff1a; ChatGPT Prompt Engineering Learning Notesfor Developers (面向开发者的ChatGPT提问工程学习笔记) 课程简单介绍了语言模型的工作原理&#xff0c;提供了最佳的提示工程实践&#xff0c;并展示了如何将语言模型 API 应用于各种任务的应用程序中。 此外&am…

python 自动化学习(四) pyppeteer 浏览器操作自动化

背景 之前我在工作中涉及到了很多地方都是重复性的页面点点点工作&#xff0c;又因为安全保密原则不开放接口和数据库&#xff0c;只有一个页面来提供点击进行操作&#xff0c;就想着用前面学的自动化来实现&#xff0c;但发现前面学的模拟操作对浏览器来说并没有那么友好&…

BDA初级分析——用SQL筛选数据

一、用SQL对数据分组 GROUP BY Group by&#xff0c;按...分组 作用:根据给定字段进行字段的分组&#xff0c;通常和聚合函数配合使用&#xff0c;实现分组的分析 写法:select ...from ...group by 字段名 (也可以是多个字段) GROUP BY的逻辑 SELECT gender,COUNT(user_id) …

Springboot整合Mybatis调用Oracle存储过程

1、配置说明 Oracel11g+springboot2.7.14+mybatis3.5.13 目标:springboot整合mybatis访问oracle中的存储过程,存储过程返回游标信息。 mybatis调用oracle中的存储过程方式 2、工程结构 3、具体实现 3.1、在Oracle中创建测试数据库表 具体数据可自行添加 create table s…

[C初阶笔记]P2

Git 1、Git是Linus为了帮助管理Linux内核开发 而开发的一个开放源码的分布式版本控制软件。 2、Git和TortoiseGit的作用。 Git中有各种命令行操作&#xff0c;来维护代码&#xff0c;可以将代码推送到代码托管平台。 TortoiseGit是将Git中各自命令行操作转化为图形化操作。 …

Elasticsearch复合查询之Boosting Query

前言 ES 里面有 5 种复合查询&#xff0c;分别是&#xff1a; Boolean QueryBoosting QueryConstant Score QueryDisjunction Max QueryFunction Score Query Boolean Query在之前已经介绍过了&#xff0c;今天来看一下 Boosting Query 用法&#xff0c;其实也非常简单&…

Redis数据结构——快速列表quicklist、快表

定义 Redis中的数据结构&#xff0c;链表和压缩列表这两种数据结构是列表对象的底层实现方式。 当时考虑到链表的附加空间太大&#xff0c;节点的内存都是单独分配的&#xff0c;还会导致内存碎片化问题严重。 因此从Redis3.2开始&#xff0c;对列表的底层数据结构进行了改造&…

Web和云开发,Rust会起飞?

Web和云开发&#xff0c;Rust会起飞&#xff1f; 一、前言 二、大厂偏爱&#xff0c;Rust的未来 三、Rust做Web的雄心 四、有必要换Rust做Web&#xff1f; 1.效率和性能 2.可靠性和可维护性 五、Rust先苦后甜 六、用Rust前的几个问题 七、开发界的强者 一、前言 去年…

图卷积网络:GNN 深入探讨【02/4】

一、说明 在各种类型的GNN中&#xff0c;图卷积网络&#xff08;GCN&#xff09;已成为最普遍和应用最广泛的模型。GCN具有创新性&#xff0c;因为它们能够利用节点的特征及其局部性进行预测&#xff0c;从而提供了一种处理图形结构数据的有效方法。在本文中&#xff0c;我们将…

SkyEye操作指南:连接TI CCS的IDE调试

现代电力电子控制系统的开发中&#xff0c;DSP芯片以其优越的运算性能在控制算法领域得到越来越广泛的应用。传统的DSP开发过程往往需要在完成控制系统仿真与程序设计后&#xff0c;才能根据比对结果进行程序修改&#xff0c;全过程还需要硬件电路工程师的配合&#xff0c;开发…