当前位置: 首页 > news >正文

蓝桥杯 游戏 6251 单调队列

传送门 0游戏 - 蓝桥云课

有了单调队列,在求解答案时:当我们需要对最大值的列表和最小值的列表进行俩俩组合,如果直接用两个f0r循环进行匹配,那么时间复杂度太大,容易超时。我们可以进行一个推导,假设最大值列表为Ai,最小值为Bi。nA1-B1+..+Bn)+..+nAn.(B1..+Bn)。因为结果是算期望,需要除以n^2,那么上式变为(A1+..+An)-B1+.+Bn)n。


const int N = 1e5 + 10;

int n,k;
LL a[N];
int dq[N],hh = 1,tt = 0;
LL L[N],H[N];
LL cnt;

void solve()
{
	cin >> n >> k;
	for (int i = 1;i <= n;i ++) cin >> a[i];
	
	for (int i = 1;i <= n;i ++)
	{
		while(hh <= tt && dq[hh] < i - k + 1) hh ++;
		while(hh <= tt && a[dq[tt]] >= a[i]) tt--;
		dq[++tt] = i;
		if (i >= k) L[++cnt] = a[dq[hh]];
	}
	
	hh = 1,tt = 0,cnt = 0;
	for (int i = 1;i <= n;i ++)
	{
		while(hh <= tt && dq[hh] < i - k + 1) hh ++;
		while(hh <= tt && a[dq[tt]] <= a[i]) tt--;
		dq[++tt] = i;
		if (i >= k) H[++cnt] = a[dq[hh]];
	}
	
	for (int i = 1;i <= cnt;i ++) L[i] += L[i - 1],H[i] += H[i - 1];

	cout << fixed << setprecision(2) << 1.0 * (H[cnt] - L[cnt]) / cnt << endl;
}


http://www.dtcms.com/a/106649.html

相关文章:

  • .NET 创建MCP使用大模型对话
  • 【计网速通】计算机网络核心知识点与高频考点——数据链路层(二)
  • kafka消息可靠性传输语义
  • 大语言模型开发框架——LangChain
  • 使用PyTorch实现LeNet-5并在Fashion-MNIST数据集上训练
  • 【Linux】内核驱动学习笔记(二)
  • 基于Spring AI与Ollama构建本地DeepSeek对话机器人
  • 数据库分库分表中间件及对比
  • ensp 网络模拟器 思科华为基于VLANIF的公司网络搭建
  • 2025.4.2总结
  • Go语言GC:三色标记法工程启示|Go语言进阶(3)
  • K-means算法
  • 从零搭建微服务项目Pro(第7-1章——分布式雪花算法)
  • cmake(11):list 选项 排序 SORT,定义宏 add_definitions,cmake 里预定义的 8 个宏
  • Git 命令大全:通俗易懂的指南
  • 基于大模型预测风湿性心脏病二尖瓣病变的多维度诊疗研究报告
  • 内网隔离环境下Java实现图片预览的三大解决方案
  • 【Django开发】前后端分离django美多商城项目第15篇:商品搜索,1. Haystack介绍和安装配置【附代码文档】
  • 从 ZStack 获取物理机与云主机信息并导出 Excel 文件
  • visual studio 2022的windows驱动开发
  • C# System.Text.Json 中 JsonIgnoreCondition 使用详解
  • Linux2 CD LL hostnamectl type mkdir dudo
  • 跨系统平台实践:在内网自建kylin服务版系统yum源
  • 面基JavaEE银行金融业务逻辑层处理金融数据类型BigDecimal
  • AI提示词:好评生成器
  • 鸿蒙NEXT小游戏开发:数字华容道
  • 详解相机的内参和外参,以及内外参的标定方法
  • 背包DP总结
  • GO语言 使用protobuf
  • 【第十三届“泰迪杯”数据挖掘挑战赛】【2025泰迪杯】【代码篇】A题解题全流程(持续更新)