P2717 寒假作业 CDQ

寒假作业

传送门

题目背景

zzs 和 zzy 正在被寒假作业折磨,然而他们有答案可以抄啊。

题目描述

他们共有 n n n 项寒假作业。zzy 给每项寒假作业都定义了一个疲劳值 a i a_i ai,表示抄这个作业所要花的精力。

zzs 现在想要知道,有多少组连续的寒假作业的疲劳值的平均值不小于 k k k

简单地说,给定一个长度为 n n n 的正整数序列 { a i } \{a_i\} {ai},求出有多少个连续子序列的平均值不小于 k k k

输入格式

第一行是两个整数,分别表示序列长度 n n n 和给定的参数 k k k

第二行有 n n n 个整数,第 i i i 个整数表示序列的第 i i i 个数字 a i a_i ai

输出格式

输出一行一个整数表示答案。

样例 #1

样例输入 #1

3 2
1
2
3

样例输出 #1

4

提示

样例 1 解释

共有 6 6 6 个连续的子序列,分别是 ( 1 ) (1) (1) ( 2 ) (2) (2) ( 3 ) (3) (3) ( 1 , 2 ) (1,2) (1,2) ( 2 , 3 ) (2,3) (2,3) ( 1 , 2 , 3 ) (1,2,3) (1,2,3),平均值分别为 1 1 1 2 2 2 3 3 3 1.5 1.5 1.5 2.5 2.5 2.5 2 2 2,其中平均值不小于 2 2 2 的共有 4 4 4 个。

数据规模与约定
  • 对于 20 % 20\% 20% 的数据,保证 n ≤ 100 n \leq 100 n100
  • 对于 50 % 50\% 50% 的数据,保证 n ≤ 5000 n \leq 5000 n5000
  • 对于 100 % 100\% 100% 的数据,保证 1 ≤ n ≤ 1 0 5 1 \leq n \leq 10^5 1n105 1 ≤ a i , k ≤ 1 0 4 1 \leq a_i,k \leq 10^4 1ai,k104

以上来自洛谷 以上来自洛谷 以上来自洛谷

解题思路

题目看不懂?确实题面可以转化为:求平均值大于等于k的区间个数。是不是想用 C D Q CDQ CDQ 了?我偏不用。

考虑暴力

枚举每个区间的右端点,枚举相应的区间。时间复杂度 O ( n 2 ) O(n^2) O(n2)

优化

对于平均值的处理,可以把 a i − k a_i-k aik,这样问题就转换为求出区间和大于等于0的区间个数
枚举右端点之后,考虑怎么快速求出左边区间和大于等于 0 0 0 的个数。
定义 t o t tot tot 表示当前以 i i i 为右端点的前缀和,用一个vector<int> sum维护当前右端点对应的所有左端点加 t o t tot tot 表示某段区间和。这样每次只要求出 s u m + t o t ≥ 0 sum+tot\ge 0 sum+tot0 的个数,很容易想到二分,可以手打,但有函数可以直接用。用lower__boundinsert保证插入后vector有序。考虑插入对于当前位置 j j j j j j i i i 的区间和,表示为 S u m i − S u m j − 1 Sum_i-Sum_{j-1} SumiSumj1。而 S u m j − 1 Sum_{j-1} Sumj1 就是当前枚举到j还没有加上 a j a_j aj t o t tot tot。时间复杂度 O ( n × n ) O(n\times \sqrt n) O(n×n ),这不就过了吗。

AC Code

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int Maxn = 4e5 + 5;
int n, k, a[Maxn];
vector<int> sum;
int tot;
int ans;
inline void work() {cin >> n >> k;for (int i = 1; i <= n; i++) {cin >> a[i];a[i] -= k;}int tmp;for (int i = 1; i <= n; i++) {sum.insert(lower_bound(sum.begin(), sum.end(), -tot), -tot);tot += a[i];tmp = sum.end() - lower_bound(sum.begin(), sum.end(), -tot);ans += tmp;}cout << ans << endl;
}
signed main() {ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);work();return 0;
}
//CDQ?

什么?你还想写 C D Q CDQ CDQ

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

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

相关文章

Laravel 开发中总结的一些方式方法

1、最大限度地使用你的 .env 文件; 2、不要破坏框架核心&#xff0c;不要编辑 vendor 文件夹中的文件&#xff0c;你可以选择继承相关函数来实现。扩展优于修改 3、不要直接通过 PHPMyAdmin 或者其他数据库控制台创建表和索引。请使用数据库迁移表来创建表、增加修改字段&…

sqlserver2012 跨服务器查询

在 SQL Server 2012 中&#xff0c;跨服务器查询可以通过链接服务器来实现。以下是执行跨服务器查询的步骤&#xff1a; 创建链接服务器&#xff1a; 首先&#xff0c;你需要在 SQL Server 2012 上创建一个链接服务器对象。可以使用系统存储过程 sp_addlinkedserver 来完成这一…

spring refresh

preareRefresh&#xff1a;刷新前的工作准备 obtainFreshBeanFactory&#xff1a;获取子类刷新后的内部beanFactory实列 prepareBeanFactory&#xff1a;为容器注册必要的系统级别bean postProcessBeanFactory&#xff1a;允许容器的子类注册postProcessor invokeBeanFacto…

JS加密/解密之一个少见的js解密

直接上源代码 (function(){var tfK,EAc715-704;function JQI(d){var q514800;var yd.length;var i[];for(var v0;v<y;v){i[v]d.charAt(v)};for(var v0;v<y;v){var pq*(v245)(q%31355);var eq*(v264)(q%20133);var kp%y;var oe%y;var mi[k];i[k]i[o];i[o]m;q(pe)%3352359…

【漏洞复现】Hikvision综合安防管理平台config信息泄露漏洞

Nx01 产品简介 Hikvision&#xff08;海康威视&#xff09;是一家在中国颇具影响力的安防公司&#xff0c;其网络摄像头产品在市场上占据了相当大的份额。综合安防管理平台基于“统一软件技术架构”理念设计&#xff0c;采用业务组件化技术&#xff0c;满足平台在业务上的弹性扩…

本地cuda的部署方式

1首先在终端利用命令ndivia-smi查看自己的驱动版本和cuda version 查看是否匹配&#xff08;或者有没有安装cuda&#xff09; 查看是否匹配&#xff1a;知乎 - 安全中心 安装cuda&#xff1a;知乎 - 安全中心 2搞定cuda之后&#xff0c;就要安装与cuda相对应的pytorch版本。…

关于程序员的未来的这件事情,我是这么看的!

关于程序员的未来在哪里&#xff1f;很多想做程序员以及已经入坑的程序员都想知道&#xff0c;我作为一名工龄超过12年的资深大龄程序员&#xff0c;我其实也想知道&#xff0c;我也没办法确定程序员的未来在哪里。 或者我也不知道&#xff0c;为什么互联网当初招聘那么多的程…

【RL】(task2)策略梯度算法

note 文章目录 note一、策略梯度算法二、策略梯度算法的优缺点时间安排Reference 一、策略梯度算法 策略梯度&#xff08;Policy Gradient&#xff09;算法是一类用于解决强化学习问题的算法&#xff0c;它通过直接对策略进行参数化&#xff0c;并利用梯度上升的方法来优化策略…

【数据库原理】(37)Web与数据库

随着网络的高速发展和网络服务的日趋完善&#xff0c;网络上的信息量呈几何级数增长。为了有效地组织、存储、管理和使用网上的信息&#xff0c;数据库技术被广泛地应用于网络领域。特别是在Internet上&#xff0c;已建立了数以万计的网站&#xff0c;其中大中型网站的后台大多…

Leetcode 3017. Count the Number of Houses at a Certain Distance II

Leetcode 3017. Count the Number of Houses at a Certain Distance II 1. 解题思路2. 代码实现 题目链接&#xff1a;3017. Count the Number of Houses at a Certain Distance II 1. 解题思路 这一题其实思路上还是比较简单的&#xff0c;显然任何一个图都可以拆分为以下三…

【数据库原理】(38)数据仓库

数据仓库&#xff08;Data Warehouse, DW&#xff09;是为了满足企业决策分析需求而设计的数据环境&#xff0c;它与传统数据库有明显的不同。 一.数据库仓库概述 定义: 数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合&#xff0c;用于支持企业管理和…

机械设计-哈工大课程学习-螺旋传动

二、摩擦类型 1、静态摩擦&#xff1a;这是身体静止时所经历的摩擦。换句话说&#xff0c;就是身体有运动倾向时的摩擦力。 2、动态摩擦&#xff1a;这是身体在运动时所经历的摩擦。也称为动摩擦。动摩擦有以下两种类型&#xff1a; ①滑动摩擦&#xff1a;一个物体在另一个…

C# Socket通信从入门到精通(17)——单个异步UDP服务器监听一个客户端C#代码实现

前言: 我们在开发UDP通信程序时,除了开发UDP同步客户端程序,有时候我们也需要开发异步UDP服务器程序,所谓的异步最常见的应用就是服务器接收客户端数据以后,程序不会卡在数据接收这里,而是可以继续往下执行,这在实际项目中是经常会遇到的,所以说掌握异步UDP服务器程序…

学会这个工具,小白也可制作门窗电子画册

​随着互联网技术的发展&#xff0c;现在制作电子画册已经变得非常简单。如果你是一个新手&#xff0c;也可以通过学习一些技巧来制作门窗电子画册。 那么&#xff0c;如何制作门窗电子画册呢&#xff1f;其实&#xff0c;这个过程并不复杂。只需要一台电脑和一个基本的操作工具…

K8s(七)四层代理Service

Service概述 Service在Kubernetes中提供了一种抽象的方式来公开应用程序的网络访问&#xff0c;并提供了负载均衡和服务发现等功能&#xff0c;使得应用程序在集群内外都能够可靠地进行访问。 每个Service都会自动关联一个对应的Endpoint。当创建一个Service时&#xff0c;Ku…

Es bulk批量导入数据(1w+以上)

最近在学习es的理论知识以及实际操作&#xff0c;随时更新~ 概要&#xff1a;首先你得有1w条数据的json&#xff0c;然后用java读取json文件导入 一. 创建Json数据 首先我生成1.5w条数据&#xff0c;是为了实践分页查询&#xff0c;用from-size和scroll翻页去实践 生成四个字段…

检索增强(RAG)的方式---重排序re-ranking

提升RAG&#xff1a;选择最佳嵌入Embedding&重排序Reranker模型 检索增强生成(RAG)技术创新进展&#xff1a;自我检索、重排序、前瞻检索、系统2注意力、多模态RAG RAG的re-ranking指的是对初步检索出来的候选段落或者文章&#xff0c;通过重新排序的方式来提升检索质量。…

mac安装部署gitbook教程

mac安装部署gitbook教程 前言一、安装准备二、GitBook安装项目初始化 前言 一些自己实际操作的记录。 一、安装准备 Node.js gitbook基于Node.js&#xff0c;所以需要提前安装。 下载地址&#xff1a;https://nodejs.org/en/&#xff0c;可以下载比较新的版本。(但我的建议是不…

Linux指令补充和权限简单介绍

一.tar指令 形式&#xff1a;tar [-cxtzjvf] 文件与目录 ....
 参数&#xff1a;
 -c &#xff1a;建立一个压缩文件的参数指令(create 的意思)&#xff1b; -x &#xff1a;解开一个压缩文件的参数指令&#xff01; -t &#xff1a;查看 tarfile 里面的文件&#xff01; -…

练习题 幸运数

题目 问题描述 小蓝认为如果一个数含有偶数个数位&#xff0c;并且前面一半的数位之和等于后面一半的数位之和&#xff0c;则这个数是他的幸运数字。例如 23142314 是一个幸运数字, 因为它有 44 个数位, 并且 23142314 。现在请你帮他计算从 11 至 100000000100000000 之间共…