MT2057 门票

 

思路:

此题是求有多少个区间的平均值>=t, 那么可以把每个值-t。如果新的数列的某个区间的和>=0,那么说明这个区间满足条件。

令新数列的前缀和为b[i],所以求[i, j]区间是否满足条件,即求b[j]-b[i-1]是否>=0,即b[j]>=b[i-1]。

因为j>i>i-1,所以这里即求“伪逆序对”的数量。

扩展知识:

逆序对:i>j a[i]<a[j]      伪逆序对/非逆序对:i>j a[i]>a[j]

方法:归并排序

代码:

1.8/10代码:错误原因:超时

#include <bits/stdc++.h>
using namespace std;
const long long int N = 1e6 + 10;
long long int p = 1e9 + 7;
long long int n, t;
long long int a[N];
long long int b[N];
int main()
{cin >> n >> t;for (long long int i = 1; i <= n; i++){cin >> a[i];a[i] -= t;}for (long long int i = 1; i <= n; i++){b[i] = b[i - 1] + a[i];}long long int ans = 0;for (long long int i = 1; i <= n; i++){for (long long int j = 1; j <= i; j++){if (b[i] - b[j - 1] >= 0){ans++;}}}cout << ans % p;
}

2.10/10代码:升序排列求逆序对,再用总的-逆序对即为非逆序对个数

#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 1e6 + 10;
int p = 1e9 + 7;
ll n, t;
ll a[N], sum[N], q[N];
ll ans = 0;
void merge_sort(int l, int r, ll a[])
{if (l >= r)return;int mid = (l + r) >> 1;merge_sort(l, mid, a);merge_sort(mid + 1, r, a);int i = l, j = mid + 1, k = 0;while (i <= mid && j <= r){if (a[i] > a[j]){q[k++] = a[j++];ans += mid - i + 1; // 升序排列,求逆序数ans %= p;}else{q[k++] = a[i++];}}while (i <= mid)q[k++] = a[i++];while (j <= r)q[k++] = a[j++];for (i = l, j = 0; i <= r; i++, j++){a[i] = q[j];}
}int main()
{cin >> n >> t;for (int i = 1; i <= n; i++){cin >> a[i];a[i] -= t;sum[i] = sum[i - 1] + a[i];}merge_sort(0, n, sum);cout << (n * (n + 1) / 2 - ans) % p;return 0;
}

3.10/10代码,直接降序求非逆序对个数

#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 1e6 + 10;
int p = 1e9 + 7;
ll n, t;
ll a[N], sum[N], q[N];
ll ans = 0;
void merge_sort(int l, int r, ll a[])
{if (l >= r)return;int mid = (l + r) >> 1;merge_sort(l, mid, a);merge_sort(mid + 1, r, a);int i = l, j = mid + 1, k = 0;while (i <= mid && j <= r){if (a[i] <= a[j]){q[k++] = a[j++];ans += mid - i + 1; // 降序排列,求非逆序数ans %= p;}else{q[k++] = a[i++];}}while (i <= mid)q[k++] = a[i++];while (j <= r)q[k++] = a[j++];for (i = l, j = 0; i <= r; i++, j++){a[i] = q[j];}
}int main()
{cin >> n >> t;for (int i = 1; i <= n; i++){cin >> a[i];a[i] -= t;sum[i] = sum[i - 1] + a[i];}merge_sort(0, n, sum);cout << ans % p;return 0;
}

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

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

相关文章

端午佳节,品尝食家巷传统面点与黄米粽子礼盒

端午佳节&#xff0c;品尝食家巷传统面点与黄米粽子礼盒 在这个端午节来临之际&#xff0c;食家巷倾情推出一款别具特色的端午礼盒&#xff0c;将甘肃的传统面点与地方特色黄米粽子完美融合&#xff0c;为您带来一场美味与传统的邂逅。 这款礼盒以甘肃传统面点一窝丝、油饼和烤…

Python GUI开发- PyQt5 开发小工具环境入门

前言 常见的python开发gui的库有 Tkinter&#xff0c; PyQt5&#xff0c; wxPython等。本教程是选择PyQt5 开发桌面小工具。 环境准备 只需pip安装即可快速准备好开发环境 pip install pyqt5快速开始 创建一个空的window窗口 Qapplication()&#xff1a;每个GUI都必须包含…

如何安全高效地进行4S店文件分发,保护核心资产?

4S店与总部之间的文件分发是确保双方沟通顺畅、信息共享和决策支持的重要环节。4S店文件分发涉及到以下文件类型&#xff1a; 销售报告&#xff1a;4S店需要定期向总部提交销售报告&#xff0c;包括销售数量、销售额、市场份额等关键指标。 库存管理文件&#xff1a;包括车辆库…

电脑版的学浪课程下载方法

想在你的电脑上无限制地访问你最爱的学浪课程吗&#xff1f;现在&#xff0c;让我揭秘如何用几个简单步骤&#xff0c;轻松下载任何学浪课程到你的电脑&#xff0c;让学习不再受时间和地点的限制&#xff0c;随时随地都是你的课堂。 下载学浪视频的工具&#xff0c;我已经打包…

使用python开发的闭运算调试器

使用python开发的开运算调试器 简介效果代码 简介 用来调试闭运算效果的小工具&#xff0c;滑动条可以控制滤波核的大小&#xff0c;用来查看不同滤波核下的闭运算效果。 效果 代码 import sys from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayou…

《新生向》什么是Python环境?

观前提醒&#xff1a;本文详细介绍了Python环境的结构&#xff0c;介绍了python虚拟环境基础用法&#xff0c;以及python中的环境&依赖管理 0.什么是Python环境 Python环境是指一个特定的设置&#xff0c;其中包含了运行Python代码所需的一系列软件工具和包。这个环境可以…

TiDB学习2:TiDB Sever

目录 1. TiDB Server架构 2. sql语句的解析和编译 2.1 Parse ​编辑 2.2 compile 3. 行转化为KV对(聚簇表) ​编辑4. SQL 读写相关模块 4.1 DistSQL(复杂查询) 4.2 KV(简单查询) 5. 在线DDL相关模块 6. GC机制与相关模块 7. TiDB Server的缓存 8. 热点小表缓存 9. …

【数据结构】图和基本算法

文章目录 1. 图的基本概念1.1 图本身的定义1.2 相关概念 2. 图的存储结构2.1 邻接矩阵2.2 邻接表 3. 图的遍历3.1 广度优先遍历&#xff08;BFS&#xff09;3.2 深度优先遍历&#xff08;DFS&#xff09; 4. 最小生成树4.1 Kruskal算法4.2 Prim算法 5. 最短路径5.1 单源最短路径…

【Linux】用户组、用户、文件权限(ugo权限),权限掩码,chmod,chown,suid,sgid,sticky,su,sudo

用户组 注意&#xff1a;普通用户只能查看有哪些组&#xff0c;不能创建/修改/删除&#xff0c;会提示&#xff1a;用户名 is not in the sudoers file.This incident will be reported. groupadd 用户组名新建用户组cat /etc/group查看有哪些组&#xff08;普通用户可以操作…

关于DOCKER启动后如何添加新的端口映射

前段时间在用docker部署服务的时候发现&#xff0c;容器已经启动&#xff0c;但是需要新的端口映射&#xff08;即容器在启动的时候只进行了部分的端口映射&#xff09;&#xff0c;经过查询资料后发现现在网上有2种方法&#xff0c;一中是修改json文件。另一种是将已经运行的容…

FreeRtos内核源码分析(九)——协程

目录 一、协程简介 二、协程工作机制 2.1 协程控制块结构 2.2 协程管理方式 2.3 协程调度方式 2.4 协程通信机制 三、协程状态及状态切换 3.1 协程状态 3.2 状态切换 四、协程创建 五、协程调度分析 5.1 源码分析 5.2 逻辑图分析 六、协程通信 6.1 协程发送消息…

Centos7 配置 DNS服务器

Centos 7 配置DNS服务器 环境描述&#xff1a; 一台服务器和一台用于测试的客户机 服务器IP&#xff1a;192.168.200.132 客户机IP&#xff1a;192.168.200.143 服务器配置 yum install bind bind-utils -y #安装软件包vim /etc/named.conf //编辑named主配置文件listen-on p…

【Redis】Redis键值存储

大家好&#xff0c;我是白晨&#xff0c;一个不是很能熬夜&#xff0c;但是也想日更的人。如果喜欢这篇文章&#xff0c;点个赞&#x1f44d;&#xff0c;关注一下&#x1f440;白晨吧&#xff01;你的支持就是我最大的动力&#xff01;&#x1f4aa;&#x1f4aa;&#x1f4aa…

从新手到高手,教你如何改造你的广告思维方式!

想要广告震撼人心又让人长时间记住&#xff1f;答案肯定是“创意”二字。广告创意&#xff0c;说白了就是脑洞大开&#xff0c;想法新颖。那些很流行的广告&#xff0c;都是因为背后的想法特别、新颖。做广告啊&#xff0c;就得不停地思考&#xff0c;创新思维是关键。 广告思…

短视频赛道有哪些:成都鼎茂宏升文化传媒公司

短视频赛道有哪些&#xff1a;探索多元化的内容领域 随着科技的飞速发展和人们生活节奏的加快&#xff0c;短视频已成为现代人生活中不可或缺的一部分。它以其简短、直观、易于分享的特点&#xff0c;迅速占领了各个年龄层和社会群体的心智。然而&#xff0c;短视频的赛道并非…

Franz Electron + React 源码启动运行填坑指南

环境要求 安装miniconda python 环境electron/rebuild用得着&#xff0c;miniconda 默认自带的 python 是 3.11 版本&#xff0c;比较新&#xff1b; 安装virsual studio 2019 要把C桌面相关的都安装了&#xff0c;大概需要20G&#xff0c;不要安装到 C 盘&#xff0c;都安装到…

C++系统编程篇——Linux初识(系统安装、权限管理,权限设置)

(1)linux系统的安装 双系统---不推荐虚拟机centos镜像&#xff08;可以使用&#xff09;云服务器/轻量级云服务器&#xff08;强烈推荐&#xff09; ①云服务器&#xff08;用xshell连接&#xff09; ssh root公网IP 然后输入password ①添加用户&#xff1a; addus…

web前端框架设计第十课-自定义指令

web前端框架设计第十课-自定义指令 一.预习笔记 1.注册全局指令&#xff08;先注册在使用&#xff09; 2.注册局部指令&#xff08;要找标签有的属性&#xff09; 3.钩子函数 4.binding对象参数 二.课堂笔记 三.课后回顾 –行动是治愈恐惧的良药&#xff0c;犹豫拖延将不断滋…

在大型项目上,Python 是个烂语言吗?

在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「Python的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; python项目超过5万行&#x…

巩固学习6

正则表达式 又称规则表达式&#xff0c;Regular Expression&#xff0c;在代码中常简写为regex、regexp或RE&#xff09;&#xff0c;是一种文本模式&#xff0c;包括普通字符&#xff08;例如&#xff0c;a到z之间的字母&#xff09;和特殊字符&#xff08;称为“元字符”&…