【模拟 + 离线】CF1719 C

news2024/10/5 16:29:52

Problem - C - Codeforces

题意:

 

思路:

手摸以下样例容易发现

对于最大值左边的数,答案可以直接模拟轮数得到

对于最大值,答案直接就是pos

对于最大值右边的数,答案就是0

接下来就是如何模拟轮数的问题了

一开始开了个前缀和数组直接模拟然后统计,T了,因为空间直接是N*Q的

所以我们需要离线

离线操作,其实就是把询问保存下来,按关键字排序,然后按关键字模拟,保存答案

这道题我们按轮数模拟,因此我们可以把询问保存下来,按轮数排序

然后用双端队列模拟的过程中统计答案,用指针idx指向当前是哪个询问,然后idx ++保存答案

模拟完n轮之后,可能会有询问的轮数很大,因此需要额外处理这些轮数很大的询问

Code:

#include <bits/stdc++.h>

#define int long long

using i64 = long long;

using namespace std;

const int N = 1e5 + 10;

int a[N], ans[N];

void solve() {
    int n, Q;
    cin >> n >> Q;
    for (int i = 1; i <= n; i ++) {
        cin >> a[i];
        ans[i] = 0;
    }

    vector<array<int, 3> > q;
    for (int i = 1; i <= Q; i ++) {
        int x, k;
        cin >> x >> k;
        q.push_back({k, x, i});
    }

    sort(q.begin(), q.end());

    int idx = 0;
    deque<int> d;
    for (int i = 1; i <= n; i ++) {
        d.push_back(i);
    }

    vector<int> win(n + 1, 0);
    for (int i = 1; i <= n; i ++) {
        int x = d.front();
        d.pop_front();
        int y = d.front();
        d.pop_front();
        if (a[x] < a[y]) swap(x, y);
        win[x] ++;
        d.push_front(x);
        d.push_back(y);
        while (idx < Q && q[idx][0] == i) {
            ans[q[idx][2]] = win[q[idx][1]];
            idx ++;
        }
    }

    while(idx < Q) {
        auto [k, x, id] = q[idx];
        if (x != d.front()) {
            ans[id] = win[x];
        }else {
            ans[id] = win[x] + k - n;
        }
        idx ++;
    }
    for (int i = 1; i <= Q; i ++) {
        cout << ans[i] << "\n";
    }
}
signed main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    
    int t = 1;
    cin >> t;
    while(t --) {
        solve();
    }
    return 0;
}

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

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

相关文章

直流浪涌保护器与交流浪涌保护器的区别和作用

在现代社会&#xff0c;电力作为生产、生活的重要能源&#xff0c;其稳定供应显得尤为重要。然而&#xff0c;电力系统常常受到电压浪涌的干扰&#xff0c;这种突发的电压冲击可能给设备带来损害。为了应对这一问题&#xff0c;直流浪涌保护器和交流浪涌保护器应运而生&#xf…

Android车机录制视频报错,竟是编码器的锅 ?

1. 现象描述 工作中有一个项目&#xff0c;使用的是CameraView这个第三方相机库来调用相机。 CameraView封装了Camera1和Camera2&#xff0c;内部做了很多功能的封装&#xff0c;API使用起来相对比较简单。 在App中接入后&#xff0c;手机上能够正常录制视频&#xff0c;看上去…

Deep Networks with Stochastic Depth - 动态随机网络

文章目录 基本结构ResNet的公式改造效果计算前向传播过程 实验结果CIFAR数据集结果SVHN数据集结果训练时间的比对极深网络的对比测试ImageNet的测试结果测试过程中的结果 网络结构的Hyper-parameter比对测试 前面两篇是讲经典网络ResNet的&#xff1a; ResNet1 ResNet2 这个残…

中介者模式(Mediator)

中介者模式是一种行为设计模式&#xff0c;可以减少对象之间混乱无序的依赖关系。该模式会限制对象之间的直接交互&#xff0c;迫使它们通过一个封装了对象间交互行为的中介者对象来进行合作&#xff0c;从而使对象间耦合松散&#xff0c;并可独立地改变它们之间的交互。中介者…

【设计模式——学习笔记】23种设计模式——中介者模式Observer(原理讲解+应用场景介绍+案例介绍+Java代码实现)

文章目录 案例引入案例一普通实现中介者模式 案例二 介绍基础介绍登场角色尚硅谷 《图解设计模式》 案例实现案例一&#xff1a;智能家庭类图实现 案例二&#xff1a;登录页面逻辑实现说明类图实现 总结文章说明 案例引入 案例一 普通实现 在租房过程中&#xff0c;客户可能…

回看雷军演讲,我对项目经理人的发展又有了2点想法……

大家好&#xff0c;我是老原。 最近在回看一些大佬演讲&#xff0c;看到雷军的演讲时&#xff0c;说实话我蛮激动的&#xff0c;最近常有粉丝朋友找我闲聊&#xff0c;也工作十几年&#xff0c;不知道怎么才能寻求突破&#xff1f; 而小米本身&#xff0c;不就是一直在突破吗…

C高级-day4

#!/bin/bash function fun1(){arr[0]id -u $1arr[1]id -g $1echo ${arr[*]} }arr(fun1 ubuntu) echo ${arr[*]}冒泡排序 void Maopao(int arr[],int len){for(int i1;i<len;i){int count0;for(int j0;j<len-i;j){if(arr[j]>arr[j1]){int tarr[j];arr[j]arr[j1];arr[j…

嵌入式Linux下LVGL的移植与配置

一.sdk源码下载路径 1.官方源码下载路径如下: ​​​​​​ https://github.com/lvgl/lvgl git下载方式 git clone https://github.com/lvgl/lvgl.git 2.个人移植好的源码8.2版本下载路径: 链接:https://pan.baidu.com/s/1jyqIennsQpv-RB4RyKvZyg?pwd=c68e 提取码:c68e…

《HeadFirst设计模式(第二版)》第七章代码——外观模式

代码文件目录&#xff1a; Subsystem: Amplifier package Chapter7_AdapterAndFacadePattern.FacadePattern.Subsystem;/*** Author 竹心* Date 2023/8/8**///扬声器 public class Amplifier {int volume 0;//音量public void on(){System.out.println("The amplifier …

redis 的副本和分片

什么是分片 分片也叫条带&#xff0c;指Redis集群的一个管理组&#xff0c;对应一个redis-server进程。一个Redis集群由若干条带组成&#xff0c;每个条带负责若干个slot&#xff08;槽&#xff09;&#xff0c;数据分布式存储在slot中。Redis集群通过条带化分区&#xff0c;实…

数据库优化:探索 SQL 中的索引

推荐&#xff1a;使用 NSDT场景编辑器 助你快速搭建可编辑的3D应用场景 在一本书中搜索特定主题时&#xff0c;我们将首先访问索引页面&#xff08;该页面位于该书的开头&#xff09;&#xff0c;并找到包含我们感兴趣的主题的页码。现在&#xff0c;想象一下在没有索引页的书中…

python_面向对象基础_数据分析

主要目的 对于文本格式和JSON格式数据进行分析&#xff0c;将其中数据提炼出来绘制折线图。 主要实现步骤 1.设计一个完成对数据的封装 2.设计一个抽象类,定义数据读取相关功能,使用其子类实现具体功能 3.读取文件,生成数据对象 4.进行数据计算 5.绘制图表 定义数据封装类 &…

Annotorious.js 入门教程:图片注释工具

theme: smartblue 本文简介 【今天我必须发一个封面&#xff01;放文末&#xff01;】 最近有工友问我前端怎么给图片做标注。使用 Fabric.js 或者 Konva.js 等库确实可以实现&#xff0c;但多少觉得有点大炮打蚊的感觉&#xff0c;好奇有没有专门做图片标注的工具呢&#xff1…

剑指offer(C++)-JZ16:数值的整数次方(算法-位运算)

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 题目描述&#xff1a; 实现函数 double Power(double base, int exponent)&#xff0c;求base的exponent次方。 注意&#xff1…

stm32项目(5)——基于stm32的工地噪声扬尘检测系统

目录 1.功能设计 2.硬件方案 1.单片机选择 2.声音传感器 3.PM2.5传感器 4.显示器 3.程序设计 4.课题意义 1.功能设计 本次系统实现的功能如下所示&#xff1a; 采用声音传感器检测环境噪音&#xff0c;采用PM2.5传感器检测环境灰尘浓度。若噪声超过阈值或者PM2.5超过阈…

ROS Navigation Stack安装

Navigation导航包是做导航几乎都要用的&#xff0c;大家可以先去ROS Wiki上学习下 我们先Git下对应版本的软件包&#xff0c;我是Kinetic的&#xff0c;所以是Kinetic-devel 下载后发现目录下并没有CMakeLists.txt&#xff0c;所以直接在ROS工作目录下catkin_make并不会产生可…

【FPGA】UART串口通信——奇偶校验实现

文章目录 一、奇偶校验位二、设计思路三、仿真测试 一、奇偶校验位 奇偶校验位是基于uart的数据上进行一个判断 奇校验&#xff1a;数据1个数为奇时&#xff0c;校验为0&#xff0c;反之为1 偶校验&#xff1a;数据0个数为偶时&#xff0c;校验为0&#xff0c;反之为1 Uart…

MySQL 事务原理:事务概述、隔离级别、MVCC

文章目录 一、事务1.1 事务概述1.2 事务控制语句1.3 ACID特性 二、隔离级别2.1 隔离级别的分类2.1.1 读未提交&#xff08;RU&#xff09;2.1.2 读已提交&#xff08;RC&#xff09;2.1.3 可重复读&#xff08;RR&#xff09;2.1.4 串行化 2.2 命令2.3 并发读异常2.3.1 脏读2.3…

Babylon.js着色器简明简称【Shader】

推荐&#xff1a;用 NSDT设计器 快速搭建可编程3D场景 为了生成 BabylonJS 场景&#xff0c;需要用 Javascript 编写代码&#xff0c;BabylonJS 引擎会处理该代码并将结果显示在屏幕上。 场景可以通过改变网格、灯光或摄像机位置来改变。 为了及时显示可能的变化&#xff0c;屏…

借助gopsutil库,获取机器相关信息

使用github.com/shirou/gopsutil/disk这个库&#xff0c;如何获取机器下不同磁盘分区的内容 使用 github.com/shirou/gopsutil/disk 库获取机器下不同磁盘分区的内容&#xff0c;可按如下&#xff1a; import "github.com/shirou/gopsutil/disk"//调用 disk.Partitio…