【牛客挑战赛48 E】速度即转发

win2012 r2 + IIS8.5 伪静态设置脚本映射 win2012 r2 + IIS8.5 伪静态设置脚本映射,网站用的.net fromwork 2.0 ,应用程序池设置了32位支持 阅读详情

题目

题目链接:https://ac.nowcoder.com/acm/contest/11161/E
给定一个长度为 nnn 的数组 aaa。支持 mmm 次操作:

  • 给定 l,r,kl,r,kl,r,k,求 [0,105][0,10^5][0,105] 内满足 ∑i=lrmax⁡(ai−x,0)≥k\sum^{r}_{i=l}\max(a_i-x,0)\geq k∑i=lr​max(ai​−x,0)≥k 的最大正整数 xxx。
  • 给定 x,yx,yx,y,将 axa_xax​ 修改为 yyy。

n,m,ai≤105,k≤1010n,m,a_i\leq 10^5,k\leq 10^{10}n,m,ai​≤105,k≤1010。

思路

设值域为 AAA。
一个直观的想法是直接分块,对于每一个块维护 sum[x],cnt[x]sum[x],cnt[x]sum[x],cnt[x] 表示不小于 xxx 的数字之和以及出现次数,但是这样每次修改是 O(A)O(A)O(A) 的,无法接受。
那么自然会想到再对值域分块,然后每次询问从大到小枚举。但是这样每次询问的复杂度又是 O(nA)O(\sqrt{nA})O(nA​) 的,依然不可以接受。
所以考虑离线下来用带修莫队维护。设 sum[x],cnt[x]sum[x],cnt[x]sum[x],cnt[x] 表示值域在 [xT,(x+1)T)[xT,(x+1)T)[xT,(x+1)T) 区间的数字和以及出现次数,指针移动的复杂度是 O(1)O(1)O(1) 的,询问的时候易容从大到小枚举块,如果这个块符合要求,那么再枚举这个块内的所有数字即可。这样一次询问就是 O(A)O(\sqrt{A})O(A​) 的。复杂度就得以保证了。
时间复杂度为 O(n53+mA)O(n^{\frac{5}{3}}+m\sqrt{A})O(n35​+mA​)。我取序列块长为 200020002000,值域块长为 320320320。

代码

#include <bits/stdc++.h>
#define int long long
using namespace std;
typedef long long ll;

const int N=100010,M1=2000,M2=320;
int n,m,sb,a[N],bel[N],X[N],Y[N],cnt[M2+1],res[N];
ll sum[M2+1],ans[N];

struct Query
{
	int l,r,k,t,id;
	
	friend bool operator <(Query x,Query y)
	{
		if (bel[x.l]!=bel[y.l]) return bel[x.l]<bel[y.l];
		if (bel[x.r]!=bel[y.r]) return bel[x.r]<bel[y.r];
		return x.t<y.t;
	}
}ask[N];

int read()
{
	int d=0; char ch=getchar();
	while (!isdigit(ch)) ch=getchar();
	while (isdigit(ch)) d=(d<<3)+(d<<1)+ch-48,ch=getchar();
	return d;
}

void write(ll x)
{
	if (x>9) write(x/10);
	putchar(x%10+48);
}

void add(int x)
{
	sum[bel[a[x]]]+=a[x];
	cnt[bel[a[x]]]++;
	res[a[x]]++;
}

void del(int x)
{
	sum[bel[a[x]]]-=a[x];
	cnt[bel[a[x]]]--;
	res[a[x]]--;
}

signed main()
{
	n=read(); m=read();
	for (int i=1;i<=n;i++)
	{
		a[i]=read();
		bel[i]=(i-1)/M1+1;
	}
	for (int i=1,j=0,opt;i<=m;i++)
	{
		opt=read();
		if (opt==0) sb++,ask[sb]=(Query){read(),read(),read(),j,sb};
		if (opt==1) j++,X[j]=read(),Y[j]=read();
	}
	memset(ans,-1,sizeof(ans));
	sort(ask+1,ask+1+sb);
	for (int i=0;i<=100000;i++) bel[i]=i/M2;
	for (int o=1,l=1,r=0,j=0;o<=sb;o++)
	{
		int ql=ask[o].l,qr=ask[o].r,k=ask[o].k,t=ask[o].t;
		for (;l>ql;l--) add(l-1);
		for (;r<qr;r++) add(r+1);
		for (;l<ql;l++) del(l);
		for (;r>qr;r--) del(r);
		for (;j<t;j++)
		{
			if (l<=X[j+1] && r>=X[j+1]) del(X[j+1]); 
			swap(a[X[j+1]],Y[j+1]);
			if (l<=X[j+1] && r>=X[j+1]) add(X[j+1]);
		}
		for (;j>t;j--)
		{
			if (l<=X[j] && r>=X[j]) del(X[j]);
			swap(a[X[j]],Y[j]);
			if (l<=X[j] && r>=X[j]) add(X[j]);
		}
		ll s=0,c=0;
		for (int i=M2;i>=0;i--)
		{
			if (i*M2>=100000) continue;
			s+=sum[i]; c+=cnt[i];
			if (s-c*i*M2>=k)
			{
				for (int j=i*M2;j<min(100001LL,(i+1)*M2);j++)
				{
					if (s-j*c<k) { ans[ask[o].id]=j-1; break; }
					s-=res[j]*j; c-=res[j];
				}
				if (ans[ask[o].id]==-1) ans[ask[o].id]=min(100001LL,(i+1)*M2)-1;
				break;
			}
		}
	} 
	for (int i=1;i<=sb;i++)
		if (ans[i]!=-1) write(ans[i]),putchar(10);
			else putchar('-'),putchar(49),putchar(10);
	return 0;
}
基于知识图谱的时空事件关联推理能力培养 随着信息技术的飞速发展,大量的时空事件数据被产生和收集,如交通流量数据、气象观测数据、社交媒体上的地理定位信息等。这些数据蕴含着丰富的知识和规律,但要从中提取有价值的信息并非易事。基于知识图谱的时空事件关联推理旨在通过构建知识图谱,将时空事件数据进行整合和关联,从而实现对事件之间潜在关系的挖掘和推理。本文的目的是系统地介绍基于知识图谱的时空事件关联推理能力的培养方法,包括核心概念、算法原理、数学模型、实际应用等方面。 阅读详情

相关推荐

Vivado时序违约小结

目录1. setup time违约1.1 逻辑级数太高1.2 Fanout太大2. hold time 违约2.1 异步信号处理导致hold time违约 1. setup time违约 建立时间是工程设计中最常遇到的问题了。一般说来,导致建立时间违例主要有两个原因:逻辑级数太大或者扇出太大,当然也可以尝试通过降频来解决建立时间违约。 1.1 逻辑级数太高 Levels指的是逻辑级数logic level,一个logic level的延迟对应的是一个LUT和一个Net的延迟,对于不同的器件,不同频率的设计能

mu_guang_的博客 7152

牛客挑战赛48E-速度即转发【带修莫队,分块】

正题 题目链接:https://ac.nowcoder.com/acm/contest/11161/E 题目大意 给出nnn个数字的一个序列,mmm个操作。 给出l,r,kl,r,kl,r,k,求一个最大的xxx使得∑i=lrmax{ai−x,0}≥k\sum_{i=l}^rmax\{a_i-x,0\}\geq k∑i=lr​max{ai​−x,0}≥k 单点修改 解题思路 带修的比较麻烦,用带修莫队的话需要平衡一下时间复杂度,可以用分块来做。 这样修改是O(1)O(1)O(1)的,但是询问的话朴素

QuantAsk 408

涨姿势|小众建模软件Make human,MakeClothes插件使用详解教程(2)

衣服可以从头开始建模,或者通过改变人体网格或由MakeClothes工具提供的“服装助手”(见下文)来建模。在设计和建模一件衣物时,应该记住两个限制。首先,将服装网格映射到人体网格的算法要求服装网格完全由四面体组成。其次,知道MakeClothes每件衣服只支持一种材料是很重要的。 完成MakeClothes工作流程后,您的HOME / makehuman / v1 / data / clothes中的工具将创建一个新文件夹。该文件夹将采用用户为服装项目提供的唯一名称。该文件夹将填充必要的资源,以使该项目在

Crazy_in_3Dmax的博客 1874

牛客挑战赛48 B-心跳调试 概率线性DP

牛客挑战赛48 B-心跳调试 概率线性DP题意思路Code 传送门:https://ac.nowcoder.com/acm/contest/11161/B 题意 思路 假设栈顶为i,那么下一个入栈的必须是i或者i+1,所以和栈内的状态无关。假设栈顶为i,那么下一个入栈的必须是i或者i+1,所以和栈内的状态无关。假设栈顶为i,那么下一个入栈的必须是i或者i+1,所以和栈内的状态无关。 设当前为i,下一个放入i+1而不是更大的数字的概率为p,则设当前为i,下一个放入i+1而不是更大的数字的概率为p,则设当前为

狙击美佐的博客 332

基于深度学习的时间序列预测

深度学习在时间序列数据中应用广泛,学术界已经有很多深度学习模型来适应不同领域的时间序列数据集的多样性。那么到底有哪些基于深度学习的时间序列预测模型?他们的优缺点是什么?让我们一起来看一下。

Sharon0408的博客 6580

告别迷茫!用ETAS RTA-OS配置你的第一个AUTOSAR OS任务(含VRTA虚拟ECU实战)

本文详细介绍了如何使用ETAS RTA-OS工具链在VRTA虚拟ECU上配置和运行第一个AUTOSAR OS任务。通过从XML配置到任务调度的全流程实战,帮助开发者快速掌握嵌入式操作系统开发的核心步骤,特别适合刚接触AUTOSAR的开发者快速上手。

weixin_42533622的博客 418

E 速度即转发(牛客挑战赛48)(树套树)

速度即转发 给定一个长度为nnn的数组aaa,里面元素为a1,a2,a3,…,an−1,ana_1, a_2, a_3, \dots, a_{n - 1}, a_na1​,a2​,a3​,…,an−1​,an​。 有两种操作: 修改ap=ka_p = kap​=k。 给定l,r,kl, r, kl,r,k,设S(x)=∑i=lrmax(ai−x,0)S(x) = \sum\limits_{i = l} ^{r} max(a_i - x, 0)S(x)=i=l∑r​max(ai​−x,0),求x∈[0,10

lifehappy 325

H3C交换机Console口连接全攻略:从接线到PuTTY配置(附常见问题排查)

本文详细介绍了H3C交换机Console口的连接与配置方法,包括硬件线缆选择、驱动安装、PuTTY参数设置及常见问题排查。特别针对Console转USB线缆的兼容性和驱动安装难点提供实用建议,帮助网络工程师快速掌握串联调试技巧,解决连接中的黑屏、乱码等典型问题。

weixin_42549451的博客 673

速度即转发 (整体二分 / 动态主席树)

题目链接: 速度即转发 大致题意 略 解题思路 整体二分 / 动态主席树 考虑到对于s(x)函数, 其实是满足二分性质的. 所以我们可以考虑二分求解. 我们发现我们需要维护的是, 对于每一次二分的答案mid, 我们需要知道有多少个数字比mid大, 以及他们的总和是多少. 我们可以用权值线段树 或者 两个树状数组来维护信息. 整体二分做法 我们直接二分值域, 每次假设mid为询问答案, 统计大于mid的位置信息, 然后判断是否满足要求即可. 若满足要求, 则右区间去寻找. 反之去左区间寻找答案. 需要注意的

Fau的博客 153

手把手教你安装 OpenClaw 小龙虾(MAC安装教程),一次成功不踩坑

本文详细介绍了在Mac上安装OpenClaw的完整流程。主要内容包括:1)准备工作(磁盘空间、网络环境、终端工具);2)安装Homebrew包管理器及常见问题解决;3)安装Node.js 22+版本(环境核心);4)Git安装与验证;5)OpenClaw项目克隆、依赖安装及运行配置;6)大模型配置方法(以MiniMax为例)。文章提供了详细的命令行操作步骤和常见错误解决方案,特别强调了网络环境要求和Apple Silicon芯片的原生支持注意事项。最后展示了验证配置成功的方法和资源获取渠道。

Chengbei11的博客 6336

MATLAB - 利用非线性模型预测控制(Nonlinear MPC)来控制四旋翼飞行器

本示例展示了如何利用非线性模型预测控制(MPC)为四旋翼飞行器设计一个跟踪轨迹的控制器。

机器人控制与仿真应用 4430

牛客挑战赛48 B.心跳调试(概率递推)

LINK 设现在[1,i][1,i][1,i]已经成功入栈,栈顶是iii 那么下一个入栈的不同数字是i+1i+1i+1的概率有多大??设成功转移的概率是yyy 设下一次拿到iii概率是k1k_1k1​,拿到i+1i+1i+1概率是k2k_2k2​ y=k2+k1∗yy=k_2+k_1*yy=k2​+k1​∗y 解得y=k21−k1y=\frac{k_2}{1-k_1}y=1−k1​k2​​ 这样就可以开始递推。 #include <bits/stdc++.h> using namespace s

jziwjxjd的博客 517

跟踪雷达点迹处理

1,点迹定义: 假设研究对象为位置x和速度v,预测值是根据这一时刻的x值、v值来预测下一时刻的x、v;测量值是根据传感器也就是雷达得到的,因为各种误差的存在,这两个值都不准确,所以把他们加权融合,得到一个新的量—状态值。 点迹就是所谓的测量值,由雷达对同一个目标探测到的一系列点(假设目标静止,但由于误差的存在,会扫描出不止一个点),航迹对应状态值,是点迹和预测轨迹的加权融合。 2,雷达信号和点迹处理关系: 3,点迹航迹处理流程 4,仿真 clear all; RealData=G

wangjie36的博客 1万+

牛客挑战赛48 E 速度即转发(树套树)

链接:E-速度即转发_牛客挑战赛48 (nowcoder.com) 题意:给定长度为 nnn 的序列 aaa ,共进行 mmm 次操作,有两种操作: 1.给定 l,r,kl,r,kl,r,k,查询区间内满足 S(x)>=kS(x)>=kS(x)>=k 的最大 x(x∈[0,105])x(x \in [0,10^5])x(x∈[0,105]) ,S函数定义为 S(x)=∑i=lrmax⁡(ai−x,0)S(x)=\sum_{i=l}^{r} \max(a_{i}-x,0)S(x)=∑i=lr

m0_51547083的博客 268

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

牛客挑战赛48 E.速度即转发

题目链接 题目描述 BPM=RT 给定正整数 nnn,和非负整数组成的参数序列 a1,a2,…,ana_1,a_2,\dots,a_na1​,a2​,…,an​ 。 进行 mmm 次操作。 操作包含以下两种: 查询速度:给定 l,r,kl,r,kl,r,k,设 S(x)=∑i=lrmax⁡(ai−x,0)S(x) = \sum\limits_{i=l}^r \max(a_i-x,0)S(x)=i=l∑r​max(ai​−x,0),求 [0,105][0,10^5][0,105] 内满足 S(x)≥kS

sky123博客 240

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

牛客周赛 Round 48 E-小红的伪回文子串(hard)

牛客周赛 Round 48 E-小红的伪回文子串(hard)题解

2201_75303691的博客 2333

牛客练习赛138(首篇万字题解???)

j-> (0,5): f[j + 1][u] += f[j][v] 这条语句的含义是: 如果一个节点 Z 在子树 v 中,且与 v 的距离为 j(这样的节点有 f[j][v] 个),那么节点 Z 与 u 的距离就是 j+1。路径统计 (核心部分): 在从 dfs(v, u) 返回后,我们利用已经计算好的 f[][u](包含 u 自身以及 u 的 在 v 之前处理过的 其他子树的信息)和 f[][v](包含 v 的子树信息)来统计经过边 (u,v) 的路径。秒回答「对的」,在第 2,4,7,9,12,…

Script_Kids的博客 1163

牛客 试卷: 浩鲸科技2019校招算法类笔试题 经典二分 二分答案

珂珂喜欢吃香蕉。这里有 N 堆香蕉,第 i 堆中有 piles[i] 根香蕉。警卫已经离开了,将在 H 小时后回来。 珂珂可以决定她吃香蕉的速度 K (单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉 K 根。如果这堆香蕉少于 K 根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。 珂珂喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。 返回她可以在 H 小时内吃掉所有香蕉的最小速度 K(K 为整数)。 提示: 1 <= piles.length <= 10^4 piles.l

马角的逆袭的博客 714

牛客寒假1 补题

链接:https://ac.nowcoder.com/acm/contest/317/C 来源:牛客网 题目描述 小a正在玩一款星际探索游戏,小a需要驾驶着飞船从 1号星球出发前往n号星球。其中每个星球有一个能量指数p。 星球i能到达星球j当且仅当pi>pj。 同时小a的飞船还有一个耐久度t,初始时为1号点的能量指数, 若小a前往星球j,那么飞船的耐久度会变为t⊕pj (即t异或pj,关于其...

刷题记录 430

牛客多校(2020第九场)K The Flee Plan of Groundhog

题目大意: 有一个土拨鼠在节点1,一个橘子在节点n,在t时刻之前土拨鼠向着n走,橘子不动,从t时刻开始,橘子开始抓土拨鼠,土拨鼠开始跑,土拨鼠 1m/s 橘子 2m/s,问还有多长时间橘子才能抓到土拨鼠。 题解: 首先要求的 t 时刻土拨鼠的位置,然后土拨鼠需要逃跑,所以得与 n 点背向而跑,这时候有俩种可能 可供土拨鼠跑的路很长,orange抓到它也没泡到尽头 可供土拨鼠跑的路很短,...

Mrwei_418的博客 373

牛客算法周周练1 B 身体训练

B 身体训练 一道期望题,可以直接算出每个人的平均时间,然后求一个总和。 每个人的平均时间就是在哪一个位置,然后相对距离除以速度 code #pragma GCC optimize(2) #include<bits/stdc++.h> using namespace std; const int man = 2e5+10; #define IOS ios::sync_with_stdi...

nofuck的博客 296

牛客 美团编程真题 病毒传播 基础bfs暴力瞎搞

题目描述 给出一个图G(V,E),图上有n个点,m条边,所有的边都是无向边。 最开始,也就是第0天的时候,这n个点中有一个点v感染了病毒,之后的每一天,凡是感染病毒的点都会向它的邻居点传播病毒。经过了t天之后,得到了感染病毒的点集S。要求找出第0天感染病毒的点v。如果v有很多不同的答案,把它们都找出来。 输入描述: 第一行两个数n,m,接下来有m行,每行两个数u,v,表示点u,v之间有一条无向边。接下来一行两个数k,t,其中k表示集合S的大小。最后一行k个数,集合S中的元素。输入的图可能有自环和重边,输入保

马角的逆袭的博客 333

牛客暑假多校第五场 I vcd

这个题目一个队友没读懂, 然后我读错了题目, 还让他堆了半天的公式写了半天的代码, 交上去一直0.0, 另一队友问题目有没有读错, 我坚持没有读错, 然后坑了2个小时的时间,不然应该会早一点做出来。 题意: 平面上有n个不重和的点, 现在定义一个集合是好的, 那么就需要满足, 这个集合里的每一个子集 都存在一个 {(x, y) |x >= a, l <= y <= ...

dengpangbu3703的博客 113

迷茫的一周(刷牛客题) 2025/3/28

怀疑人生,知识学一次忘一次

yesyesyes_yes的博客 1055

c/c++快速读入模板

最近牛客刷题没无论怎样改样例都没法过,百度一波都是用的c语言直接过的,后来发现cin读取数据太慢了,于是找了网上的模板 1.去除锁 //快速读取数据 std::ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); 2.快速读入板子 #define re register inline long long read() { re long long x=0,f=1; re char ch=get

Cherish的博客 1145

2020牛客暑期多校训练营(第四场)

2020牛客暑期多校训练营(第四场) 这场属实有点难受 文章目录A Ancient DistanceB Basic Gcd Problem题目代码:C Count New StringD Dividing StringsE Eliminate++F Finding the Order题意:题解:代码:G Geometry ChallengeH Harder Gcd ProblemI Investigating LegionsJ Jumping on the Graph A Ancient Distance

qq_35975367的博客 538

上学要迟到了

链接:https://ac.nowcoder.com/acm/contest/7412/H 来源:牛客网 题目描述 牛牛早上起床一看,自己睡过了,赶紧起床准备去学校,他去学校只有两种方式,坐公交车和步行,牛牛去学校是一条直线,这条直线上总共有n个车站,车站之间的距离都是相等的,每个车站只有一种公交车a_ia i ​ ,每个公交车只在对应的公交站停车,每个公交车的速度也不一样,第i种公交车过一站的时间需要t_it i ​ ,并且公交车是单向行驶,只能从左到到右,走路可以任意走,然而牛牛自己步行走一站需要的

qq_45772483的博客 215
上一篇: 【CF103D】Time to Raid Cowavans
下一篇: 【洛谷P3631】方格染色
stoorz1023
博客等级 码龄9年 101粉丝 595原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值