USACO2024OPEN Gold 做题记录

news/2025/3/13 14:52:39/文章来源:https://www.cnblogs.com/dengstar/p/18769955

A. Cowreography

全场最难。不会。

B. Grass Segments

数据结构,平面数点;cdq 分治(三维偏序)

比较典的数据结构题,当然我没有做出来,因为还不会这种套路(

处理区间问题的一种套路是把区间 \((l, r)\) 看作平面上的一个点,然后可以把原问题转化成一个区间数点问题。

借用一下 @RDFZchenyy 的图:

如图,构建平面直角坐标系 \(lOr\),点 P 代表询问的区间 \((l, r)\),我们要找出哪些区域中的点代表的区间和 \((l, r)\) 重叠长度至少为 \(k\)。分为左上/左下/右上/右下四个区域讨论。

  1. 区域 A(左上):该区域中的点 \((l', r')\) 满足 \(l' \le l\)\(r' \ge r\),也就是完全包含 \((l, r)\),所以一定合法。
  2. 区域 B(右上):该区域中的点 \((l', r')\) 满足 \(l' > l\)\(r' > r\),只有当 \(l' \le r - k\) 时才合法。图中紫色的竖线代表直线 \(l' = r - k\)
  3. 区域 C(左下):该区域中的点 \((l', r')\) 满足 \(l' < l\)\(r' < r\),只有当 \(r' \le l + k\)。图中紫色的横线代表直线 \(r' = l + k\)
  4. 区域 D(右下):该区域中的点 \((l', r')\) 满足 \(l < l' < r' < r\),也就是完全被 \((l, r)\) 包含,只有当 \((l', r')\) 的长度不小于 \(k\) 时才合法。图中橙色且与主对角线平行的线(分界线 3)代表直线 \(r' = l' + k\),这条线及其上方的点都满足区间长度不小于 \(k\)

要求的就是彩色区域中的点数。这个区域的形状不规则,不太好求,所以简单地容斥一下,答案就是分界线 3 及其上方的点数减去左下和右上的两个小三角形的点数之和。

由于分界线 3 一定与主对角线平行,所以我们维护所有与主对角线平行的直线上的点的点数。换句话说把点按与 \(l\) 轴截距分类。那么对于一条与主对角线平行的直线 \(r = l + x\),它及其上方的点就是所有截距 \(\ge x\) 的点。因此我们需要能维护单点加、区间和的数据结构,由于值域比较大,需要使用动态开点线段树。(似乎树状数组套 unordered_map 也可以,但我没搞懂。)

下面考虑如何求出左下角小三角形中的点数。这还是相当于求出某条与主对角线平行的直接上方的点数,只是限定了 \(r' < l + k\)。所以把询问的 \(l + k - 1\) 和区间的 \(r\) 放在一起从小到大排序,边修改边查询,这样就可以保证查询某个区间的答案时所有点的 \(r\) 都小于 \(l + k\)。右上角的小三角形同理。

\(l\)\(r\) 的值域为 \(w\),则时间复杂度为 \(O(n \log w)\)

代码不算难写,但我因为在动态开点线段树中写出了两个弱智错误而分别被硬控了 0.5 和 1 个小时,怎么会是呢。

AC 记录

C. Smaller Averages

dp

容易想到 \(O(n^{4})\) 的 dp:设 \(f(i, j)\) 表示 \(a[1..i]\)\(b[1..j]\) 的答案,枚举转移点 \(1 \le x \le i\)\(1 \le y \le j\) 统计答案。

\[f(i, j) = \sum_{1 \le x \le i, 1 \le y \le j} f(x - 1, y - 1) \times [\operatorname{avg}(b[y..j]) \le \operatorname{avg}(a[x..i])] \]

观察数据范围,我们大概要搞出一个 \(O(n^{3})\) 的算法,如何优化?

转移点 \((i, j), (x, y)\) 的总数的上界可以达到 \(O(n^{4})\),我们肯定要用某种方式求出类似前缀和的东西,使得当 \(i, j, x, y\) 中的三个量固定时可以快速求出这种情况下的贡献。

我们的策略是:先枚举 \(j\),对于所有 \(1 \le y \le j\),求出 \(\operatorname{avg}(b[y..j])\) 并排序。然后枚举 \(1 \le x \le n\),对 \(1 \le y \le j\)按排序后的顺序预处理 \(f(x - 1, y - 1)\) 的前缀和。再枚举 \(x \le i \le n\),动态维护 \(\operatorname{avg}(a[x..i])\)。此时对于固定的 \((i, j)\)\(x\),由于已经把 \(y\)\(\operatorname{avg}(b[y..j])\) 的大小排了序,所以可以直接二分找到最后一个 \(\operatorname{avg}(b[y..j])\) 不超过 \(\operatorname{avg}(a[x..i])\)\(y\),加上前缀和。时间复杂度 \(O(n^{3} \log n)\),稍微卡下常能够通过。

AC 记录

这个优化的实质是通过改变转移顺序,我们得以预处理某些东西的前缀和,然后统一处理多个转移点。这种做法可能比较常规,但我自己做的时候完全没想到(其实之前做过一道思想类似的题:[JOIG 2025] 神経衰弱 2)。

我们该如何得到这个思路?首先想:当枚举到某个 \((i, j)\)\(x\) 时,能否把所有可以转移的 \(y\) 一起转移。这需要当 \(j\) 固定时,预处理所有 \(y\)\(\operatorname{avg}(b[y..j])\) 再排序。然后对于一个 \(x\),确实可以二分求出最后一个能转移的 \(y\),但还是不能一起转移,因为转移的式子中含 \(x\) 这个量,但我们是先枚举了 \((i, j)\) 再枚举了 \(x\),此时的时间复杂度已经是 \(O(n^{3})\),没有时间预处理关于 \(x\) 的量的前缀和。所以考虑改变转移顺序:先枚举 \(x\) 再枚举 \(i\) 而不是相反。

这道题还可以优化到 \(O(n^{3})\),以后再补。

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

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

相关文章

每美搭

一、团队介绍 1.1 团队概况 1.1.1 博客展示链接 团队名:每美搭子们,组长博客链接 https://www.cnblogs.com/0623-k 1.1.2 团队项目描述 每美搭:每美搭是一款专注于服装搭配推荐的APP。它能精准获取用户个人基本体型、上传服装类型等多维度数据,结合地区天气、用户心情、服装…

WSL中添加自签证书

问题描述 问题背景为在wsl中使用go mod tidy安装项目依赖库时, 部分库是公司内部库, 放在artifactory这个仓库中, 按照artifactory的操作文档, 设置goproxy go env -w GOPROXY=https://goproxy.cn,https://user@trip.com:passwordxxx@artifactory.release.ctripcorp.com/artifa…

打造本地化RAG知识库

打造本地化RAG知识库,还需要安装其他的组件,按照RAG的原理和机制,还需要在本地部署一个嵌入模型,可以选择bge-m3或者nomic-embed-text。 1.下载嵌入模型 回到PowerShell,执行命令ollama pull nomic-embded-text或者ollama pull bge-m3然后等待安装完成。 2.dify关联嵌入模…

【FMC214】基于VITA57.1标准的4路12G SDI视频传输FMC子卡模块

板卡概述 FMC214是一块基于VITA57.1标准的4路12G SDI视频传输FMC子卡模块,该板卡可以作为一个理想的IO单元耦合至FPGA前端,4路BNC接口形式的SDI信号通过电平转换(线缆均衡器)连接至FMC(HPC)接口的高速串行总线上,与FPGA内部的万兆位级收发器(MGT)互联,FPGA内部的SDI固…

TPT2024.12!新特性!新功能!

前言在快速迭代的科技浪潮中,汽车电子技术的飞速发展不仅重塑了行业的面貌,也对测试工具提出了更高的挑战与要求。作为汽车电子测试领域的先锋,TPT软件始终致力于为用户提供高效、精准、可靠的测试解决方案。新思科技出品的TPT软件迎来了又一次重大更新,最新版本TPT 2024.1…

ASE50N20-ASEMI无线充电专用ASE50N20

ASE50N20-ASEMI无线充电专用ASE50N20编辑:ll ASE50N20-ASEMI无线充电专用ASE50N20 型号:ASE50N20 品牌:ASEMI 封装:TO-263 批号:最新 最大漏源电流:50A 漏源击穿电压:200V RDS(ON)Max:51mΩ 引脚数量:3 沟道类型:N沟道MOS管、中低压MOS管 漏电流:ua 特性:N沟道MO…

文件上传fuzz工具-Upload_Auto_Fuzz

一、工具介绍 ​ 在日常遇到文件上传时,如果一个个去测,会消耗很多时间,如果利用工具去跑的话就会节省很多时间,本Burp Suite插件专为文件上传漏洞检测设计,提供自动化Fuzz测试,共300+条payload。 源地址: https://github.com/T3nk0/Upload_Auto_Fuzz二、功能特…

自适应远光灯系统ADB

经纬恒润的自适应远光系统 ADB 是一种能够根据路况自适应变换远光光型的智能远光控制系统。根据本车行驶状态、环境状态以及道路车辆状态,ADB 系统自动为驾驶员开启或退出远光。 经纬恒润的自适应远光系统 ADB(Adaptive Driving Beam) 是一种能够根据路况自适应变换远…

25年3月13日,【论文】

今天跟导师探讨了论文下一步的进展,有了大概的思路,总结如下:找近三年和深度学习做结果预测有关的基线模型(大概4个左右),其中,要用我选择的模型和另外三个模型做准确率对比。结果是:同一批数据,我选择的模型运算的准确率结果(F1,F2)值,要比另外三个模型的F1,F2值…

记录widows 利用composer 安装PHP扩展

1:先去菜鸟教程安装composer 文件到widows某一个目录 2:找见安装composer 位置和PHP位置 3:示例安装php-saml(php 安装位置 composer安装位置 下载的扩展) C:\PHP\v8.2\php.exe D:\ComposerSetup\composer.phar update onelogin/php-saml

搭建本地化dify

一、安装docker 1.下载并安装docker 下载地址:https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe?utm_source=docker&utm_medium=webreferral&utm_campaign=dd-smartbutton&utm_location=module2.检查docker版本 在dos命令窗口下输入…

拓扑搭建功能来了!快来看看4.4.3还有哪些新功能

产品更新概览功能新增:组件模板中新增拓扑模板。 功能修复:修复软件代理功能;修复在特定场景中数据替换存在遗漏的问题;修复鲸孪生轻3D视角问题、优化视角切换体验。 功能优化:优化SaaS多人协同编辑功能;优化鲸孪生雨雪等特效切换卡顿情况。 功能新增 在山海鲸可视化4.4.…