2022 ccpc广州站 E. Elevator

Problem - E - Codeforces

E. Elevator

题意:有一栋有m层的楼,有n部电梯从1到m。第i个电梯再ai时刻上升。每一层有一个按钮,可以让第一个到达该层的电梯停1秒,如果有多个电梯同时到某一层,下标靠前的被视为第一台到的电梯。

现在要求第i个可以第一个到m层楼至少要按多少次按钮,输出i为1到n的答案。

思路:离线处理 + 树状数组

array<int,2>或者PII存入aii值,按照ai从小到大排序。按ai从小到大依次处理得到i的答案。

对于第i个下标来说,答案就是前面处理的数量 乘以 当前ai , 之后 减去 前面处理的aj之和,再加上前面处理的下标在当前i前面的,因为它们是ai - aj + 1,而在当前下标之后的是ai - aj

注意第一层和第m层按电梯没有用(

具体代码实现:

#include <iostream>
#include <vector>
#include <string>
#include <cstring>
#include <set>
#include <map>
#include <queue>
#include <ctime>
#include <random>
#include <sstream>
#include <numeric>
#include <stdio.h>
#include <functional>
#include <bitset>
#include <algorithm>
using namespace std;// #define Multiple_groups_of_examples
#define int_to_long_long
#define IOS std::cout.tie(0);std::cin.tie(0)->sync_with_stdio(false); // 开IOS,需要保证只使用Cpp io流 *
#define dbgnb(a) std::cout << #a << " = " << a << '\n';
#define dbgtt cout<<" !!!test!!! "<<'\n';
#define rep(i,x,n) for(int i = x; i <= n; i++)#define all(x) (x).begin(),(x).end()
#define pb push_back
#define vf first
#define vs secondtypedef long long LL;
#ifdef int_to_long_long
#define int long long
#endif
typedef pair<int,int> PII;const int INF = 0x3f3f3f3f;
const int N = 2e5 + 21;template <class T>
struct Fenwick { int n;vector<T> a;Fenwick(const int &n = 0) : n(n), a(n, T()) {}void modify(int i, T x) {for (i++; i <= n; i += i & -i) {a[i - 1] += x;}}T get(int i) {T res = T();for (; i > 0; i -= i & -i) {res += a[i - 1];}return res;}T sum(int l, int r) { // [l, r] *这里已经改过return get(r + 1) - get(l);}int kth(T k) {int x = 0;for (int i = 1 << __lg(n); i; i >>= 1) {if (x + i <= n && k >= a[x + i - 1]) {x += i;k -= a[x - 1];}}return x;}
};
void solve() {int n,m; cin>>n>>m;Fenwick<int> tr(n + 1);vector<array<int,2>> sg(n);for(int i = 1; i <= n; ++i) {cin>>sg[i-1][0];sg[i-1][1] = i;}sort(all(sg));int sum = 0;vector<int> ans(n + 1);for(int i = 0; i < n; ++i) {int id = sg[i][1];int v = sg[i][0];sum += v;ans[id] = (v * (i + 1)) - sum + tr.sum(1,id);tr.modify(id, 1);if(ans[id] > m - 2) ans[id] = -1;}for(int i = 1; i <= n; ++i) cout<<ans[i]<<'\n';
}
#ifdef int_to_long_long
signed main()
#else
int main()
#endif{IOS;#ifdef Multiple_groups_of_examplesint T; cin>>T;while(T--)#endifsolve();return 0;
}
void inpfile() {#define mytest#ifdef mytestfreopen("ANSWER.txt", "w",stdout);#endif
}

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

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

相关文章

pyspark连接mysql数据库报错

使用pyspark连接mysql数据库代码如下 spark_conf SparkConf().setAppName("MyApp").setMaster("local")spark SparkSession.builder.config(confspark_conf).getOrCreate()url "jdbc:mysql://localhost:3306/test?useUnicodetrue&characterE…

在JavaScript中,使用var、let和const声明变量有什么区别?

在 JavaScript 中&#xff0c;使用 var、let 和 const 声明变量有以下区别&#xff1a; 1&#xff1a;作用域的差异&#xff1a; var 声明的变量存在函数作用域或全局作用域&#xff0c;它们在整个函数或全局范围内都是可访问的。let 和 const 声明的变量存在块级作用域&…

C语言习题整理①

一些C语言习题的整理。 目录 一、判断质数 二、判断回文数 三、判断水仙花数 四、输出乘法表 五、输出杨辉三角 一、判断质数 质数是指在大于1的自然数中&#xff0c;除了1和它本身以外不再有其他因数的自然数。质数又称素数。一个大于1的自然数&#xff0c;除了1和它自身…

为什么有了MAC地址,还需要IP地址?

解释 搞懂这个问题&#xff0c;首先需要了解交换机的功能 交换机内部有一张MAC地址映射表&#xff0c;记录着MAC地址和端口的对应关系。 如果A要给B发送一个数据包&#xff0c;构造如下格式的数据结构&#xff1a; 到达交换机时&#xff0c;交换机内部通过自己维护的 MAC 地…

Angular-07:组件生命周期

三个阶段&#xff1a; ① 挂载阶段1.1 constructor1.2 ngOnInit ② 更新阶段2.1 ngOnChanges2.2 ngAfterViewInit2.3 ngAfterContentInit2.4 ngDoCheck ③ 卸载阶段3.1 onOnDestroy ④ 在组件中添加所有方法并打印 该表按照执行顺序编写 编号函数名实现名说明1constructorcons…

uniapp自定义权限菜单,动态tabbar

已封装为组件&#xff0c;亲测4个菜单项目可以切换&#xff0c; 以下为示例&#xff0c;根据Storage 中 userType 的 值&#xff0c;判断权限菜单 <template><view class"tab-bar pb10"><view class"tabli" v-for"(tab, index) in ta…

叁[3],感兴趣区域ROI

1&#xff0c;简介 ROI&#xff0c;感兴趣区域&#xff08;region of interest)&#xff0c;截取图像 2&#xff0c;获取方法 方法1&#xff1a;使用Rect cv::Mat srccv::imread("*.bmp");//读取原图 cv::Mat matROI src(cv::Rect(100,200,50,100));//截取原图&am…

C—结构体,动态分配内存存储字符串

#define _CRT_SECURE_NO_WARNINGS #pragma warning(disable:4996)&#xff1b; //上面这一行必须加&#xff0c;否则strcpy不能用#include<stdio.h> #include<string.h>typedef struct LNode {char* name;int age; }LNode,*LinkNode;int main() {LNode node;LinkNo…

DirectX3D 虚拟现实项目 三维物体的光照及着色(五个不同着色效果的旋转茶壶)

文章目录 任务要求原始代码CPP文件代码着色器文件代码 效果展示 任务要求 本篇文章是中国农业大学虚拟现实课程的一次作业内容&#xff0c;需要对五个茶壶模型使用不同的光照进行着色和渲染&#xff0c;然后旋转展示。 本人的代码也是在其他人的代码的基础上修改来的&#xf…

centos获取服务器公网ip

查看公网IP 用下面几个命令&#xff1a; #curl ifconfig.me #curl icanhazip.com #curl cip.cc

前端框架Vue学习 ——(五)前端工程化Vue-cli脚手架

文章目录 Vue-cliVue项目-创建Vue项目-目录结构Vue项目-启动Vue项目-配置端口Vue项目开发流程 Vue-cli 介绍&#xff1a;Vue-cli 是 Vue 官方提供的一个脚手架&#xff0c;用于快速生成一个 Vue 的项目模版 安装 NodeJS安装 Vue-cli npm install -g vue/cliVue项目-创建 图…

《深入理解分布式事务:原理与实战》读书笔记

Mysql事务 锁升级 行锁升级表锁&#xff1a;如果不是索引查找&#xff0c;或者索引失效&#xff0c;此时需要全表扫描&#xff0c;会升级为锁整张表。 为什么Mysql要把扫描到的每一行以及其间隙都加锁&#xff1f;这是为了防止幻读出现。幻读导致的问题是破坏了一致性声明&am…

【从0到1开发一个网关】网关日志的开发

文章目录 网关需要那些日志?日志配置整合GC日志网关需要那些日志? 网关需要日志记录是为了监控、维护和提高系统的性能、安全性以及可用性。日志的作用包括但不限于以下几点: 故障排查:当系统出现问题或故障时,日志记录可以帮助管理员或开发人员快速定位和解决问题。通过…

三国志14信息查询小程序(历史武将信息一览)制作更新过程03-主要页面的设计

1&#xff0c;小程序的默认显示 分为三部分&#xff0c;头部的标题、中间的内容区和底部的标签栏。点击标签可以切换不同页面&#xff0c;这是在app.json文件中配置的。代码如下&#xff1a; //所有用到的页面都需要在 pages 数组中列出&#xff0c;否则小程序可能会出现错误或…

前端面试题之HTML篇

1、src 和 href 的区别 具有src的标签有&#xff1a;script、img、iframe 具有href的标签有&#xff1a;link、a 区别 src 是source的缩写。表示源的意思&#xff0c;指向资源的地址并下载应用到文档中。会阻塞文档的渲染&#xff0c;也就是为什么js脚本放在底部而不是头部的…

skynet学习笔记01— skynet开发环境搭建(超详细)与第一个skynet程序

00、参考资料 https://blog.csdn.net/qq769651718/category_7480207.html 01、前置准备 开发所在目录 mhzzjmhzzj-virtual-machine:~/work/skynetStudy$ pwd /home/mhzzj/work/skynetStudy前置准备 mhzzjmhzzj-virtual-machine:~/work/skynetStudy$ sudo apt install lua5…

CSS示例001:鼠标放div上,实现旋转、放大、移动等效果

GPT能够很好的应用到我们的代码开发中&#xff0c;能够提高开发速度。你可以利用其代码&#xff0c;做出一定的更改&#xff0c;然后实现效能。 css实战中&#xff0c;经常会看到这样的场景&#xff0c;鼠标放到一个图片或者一个div块状时候&#xff0c;会出现旋转、放大、移动…

QtC++与QToolButton详解

介绍 QToolButton 是 Qt 中的一个控件类&#xff0c;用于创建工具按钮&#xff0c;它有以下主要作用和特点&#xff1a; 工具按钮&#xff1a; QToolButton 用于创建工具按钮&#xff0c;允许用户执行各种操作&#xff0c;如启动功能、弹出菜单、打开文件等。工具按钮通常用于…

地址的层次性

地址的层次性 当地址总数并不是很多的情况下&#xff0c;有了唯一地址就可以定位相互通信的主体。然而当地址的总数越来越多时&#xff0c;如何高效地从中找出通信的目标地址将成为一个重要的问题。为此人们发现地址除了具有唯一性还需要具有层次性。其实&#xff0c;在使用电…

基于跳蛛算法的无人机航迹规划-附代码

基于跳蛛算法的无人机航迹规划 文章目录 基于跳蛛算法的无人机航迹规划1.跳蛛搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用跳蛛算法来优化无人机航迹规划。 1.跳蛛搜索算法 …