六校联考 20251105C. 物品采购(judge)

news/2025/11/5 21:04:08/文章来源:https://www.cnblogs.com/nullpt3/p/19194599

为什么写这个题解呢,因为感觉真的很久都没有写过这种屎长代码了。

\(type=1\)

手画不难发现,如果一个序列有 \(\le 2\) 个颜色段,那么它的贡献是 \(0\),因为任意一个子序列都会是子段。

否则贡献是 \(n-2\),因为可以任意漏选中间颜色段的一个元素,时间复杂度 \(O(n)\)

\(type=2\)

直觉上告诉我们,序列应该形如 \(S_0,x,S_1,x,S_2\),我们可以选择 \(S_0+x\) 或者 \(x+S_2\)

这样应该是最优的,如果我们选 \(S_0,x\) 之后还选了 \(y\),那么完全可以 \(S_0:=S_0+x,y:=x\)

需要注意不能出现 \(S_0=S_2=\varnothing\),扫一遍即可,时间复杂度 \(O(n)\)

\(type=3\)

考虑对 \(type=1\) 计数,首先容斥,总贡献为所有子序列的长度之和,设 \(n\) 的答案为 \(f_n\)

那么显然有递推式:\(f_n = 2f_{n-1} + 2^{n-1}\),求出来即可。

然后首先可以扣掉颜色段数为 \(1\) 的子序列,接下来考虑扣掉颜色段数为 \(2\) 的子序列。

不妨枚举第一个颜色段的末尾下标 \(p\),对于 \(p\) 前面的限制是选若干个等于 \(p\) 的,对 \(p\) 后面的限制是选若干个一样的。

因此维护 \(pre_{0/1,i},suf_{0/1,i}\) 代表前后缀的贡献和和方案数,记得最后要减去一个总方案数。

扫一遍前后缀即可,时间复杂度 \(O(n)\)

\(type=4\)

前面的三个部分应该都是平凡的,首先可以 \(O(2^nn)\) 暴力,然后场上根据暴力想了一个 \(O(n^4) \sim O(n^5)\) 的做法。

大概是枚举前面两个相同的,后面两个相同的下标算贡献,没写出来也不保证正确。

我们重新审视 \(type=2\) 的限制,发现这个限制并不方便计数,我们对其做转化:

\(k\) 为满足前 \(k\) 个两两不同,后 \(k\) 个两两不同的最大值。那么每个序列的贡献为 \(n-k-[k=n-1]\)

\([k=n-1]\) 的意义就是首尾相同,且中间都不同的序列答案应该是 \(0\)

对于这个式子,\(\sum n=f_n\) 已经在上面计算过,\([k=n-1]\) 可以枚举 \(p,q(p<q,a_p=a_q)\),设 \(x\)\((p,q)\) 的出现次数为 \(b_x\)

由于中间的数字两两不同,那么每个数 \(x\)\(b_x\) 种选择,或者干脆不选。那么答案即为 \(\sum_{p<q} \prod_{c \ne a_p} (b_c+1)\),这个可以在 \(O(n^3)\) 时间内计算。

现在考虑如何计算最难算的 \(\sum k\)。考虑差分贡献,把贡献 \(k\) 拆分到 \(1 \sim k\) 每个上面。我们枚举 \(p,q\) 代表第 \(k'(k' \le k)\) 个前缀和后缀下标的位置。

因为贡献被拆分了,所以我们不关心 \(k'\) 的值,我们只需要知道每种 \(k'\) 的方案之和加起来即为答案。

观察到 \(p,q\) 并不存在偏序关系,不妨先考虑 \(p<q\) 怎么做,考虑限制:

选择若干个数,强制选定 \(p,q\),使得 \([1,p],[q,n]\) 中选择的数的个数相等,并且 \([1,p]\) 选择的数互不相同,\([q,n]\) 选择的数互不相同,对 \((p,q)\) 无限制。

中间的 \((p,q)\) 区间贡献系数显然为 \(2^{q-p-1}\),我们把 \([1,p]\) 选择的个数减去 \([q,n]\) 的个数看成下标进行背包。

不过由于 \([1,p]\) 可以全部放在 \([q,n]\) 前面,可以看作是若干体积为 \(1\) 的物品。物品的系数类似上面的 \([k=n-1]\)

这样做一次背包是 \(O(n^2)\) 的,枚举 \(p,q\) 也是 \(O(n^2)\) 的,这样是 \(O(n^4)\) 的难以通过。

不过可以固定 \(p\),观察到 \(q\) 移动时物品更改个数是 \(O(1)\) 的,那么就可以回撤背包做到 \(O(n^3)\) 了。

继续观察 \(p>q\) 怎么做,考虑限制:

选择若干个数,强制选定 \(p,q\),使得 \([1,p],[q,n]\) 中选择的数的个数相等,并且 \([1,p]\) 选择的数互不相同,\([q,n]\) 选择的数互不相同。

跟上面不同的地方在于,如果在 \((q,p)\) 中区间选定一个 \(a_i=x\),那么 \([1,q),(p,n]\) 都不能再选定 \(x\)。反之也是。

也就是说,这个背包对于一种物品,有三种选择(\(+1,0,-1\) 体积,价值均不同),直接做仍然是 \(O(n^4)\) 的。

考虑这个背包怎么回撤?注意到背包等于乘上一个有交换律的稀疏矩阵,对这个稀疏矩阵高斯消元即可,消一次是 \(O(n)\) 的。

或者换一种表达方式,\(g_i = \sum af_{i-1}+bf_i +cf_{i+1}\),那么 \(g_{n+1}\) 只会由 \(af_{n}\) 转移过来,可以解出 \(f_n\)\(g_n\)\(af_{n-1}+bf_{n}\) 转移而来,可以解出 \(f_{n-1}\),依次类推。

因为这是背包删除一组加入过的物品,这个方程组应该是一定有唯一解的,时间复杂度 \(O(n^3)\)

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

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

相关文章

k3s安装metallb负载均衡

先记录配置过程,后续补充详细介绍1.安装metallb负载均衡器 1.1.配置内核转发参数 sudo tee /etc/sysctl.d/90-k8s-lb.conf <<EOF # 打开路由转发(MetalLB 必需) net.ipv4.ip_forward = 1 # 让 speaker 能及时…

PG故障处理:PG_AUTO_FAILOVER自动切换失败的故障处理

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。1、故障背景…

读书笔记:分区不一定能让查询更快——关键要看使用场景

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。本文为个人学…

quick save

s and l群星联结,调不动了; // code by 樓影沫瞬_Hz17 #include <iostream> #include <map> #include <vector> #include <algorithm>struct Chara; struct Talent; struct Attack;int turn…

cg0EoeZwd/bdvtAmh0q4PjjA4Pc=

这是郑州西亚斯学院智能体创新大赛的示例文件,如果你看到这个信息,说明这个文件的内容已经正常发送。

openwrt 使用 移动WIFI USB RNDIS 上网

最初为了简单,是使用 无线中继方式上网,但是有时不稳定,而移动WIFI 也支持 RNDIS 方式。 打开编译配置以下功能: 编译完成后,升级后插入USB 线测试[ 110.492259] usb 1-1: new high-speed USB device number 2 u…

【Agent】 ACE(Agentic Context Engineering)源码阅读笔记 ---(2)--- 训练

[Agent] ACE(Agentic Context Engineering)源码阅读笔记---(2)训练 目录[Agent] ACE(Agentic Context Engineering)源码阅读笔记---(2)训练0x00 概要0x01 AdapterBase1.1 定义1.2 核心流程1.3 主要功能1.4 Off…

Codeforces Global Round 28 VP 记录

Codeforces Global Round 28 VP 记录 Dashboard - Codeforces Global Round 28 - Codeforces 之前做过 G,赛时从 A 做到了 G,赛后做了 H,看题解会了 I1,I2 还不会。 CF2048A Kevin and Combination Lock 判断是否是…

20251104NOIP模拟

NOIP模拟总结 这场并没有打好 A 预计:100,实际:100思路历程:我先考虑去把所有点按要求的道路种类分开,判断是否联通,是否是一条链,其中每个点要求的个数是否满足条件,可以发现这个做法会超时,因为在不同颜色的…

软件工程团队项目第一次作业

软件工程团队项目第一次作业这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/homework/13573…

开源一个月Star破7000+!RustFS凭什么火出圈?

开源一个月Star破7000+!RustFS凭什么火出圈?2025年,当存储领域似乎已被MinIO、Ceph等老牌玩家瓜分完毕时,一个基于Rust语言的新星RustFS却在开源一个月内狂揽​7000+ Star​,三个月突破​10.3k,成为GitHub上星标…

第五届日月盾杯线下赛 web wp

记一次校赛ctf的web题解。。其实我打的时候一道都没做出来(目移)签个到吧!签到题也没能做出来的我属实是fw啊。。orz 进入题目后会跳转到一个公网上,有重定向,于是使用curl -v来查看原始响应,即可获得flag是的就…

异常课后作业2

Java项目中常用异常处理场景与实践总结 在Java项目开发中,异常处理是保障程序健壮性、可维护性的关键环节。合理的异常处理不仅能避免程序崩溃,还能为问题排查、用户体验优化提供有力支撑。本文将围绕Java项目中常见…

日总结 22

nvm(Node Version Manager)是一款轻量实用的 Node.js 版本管理工具,支持在同一设备上安装、卸载多个不同版本的 Node.js,可快速切换版本以适配不同项目的依赖需求,无需手动配置安装路径,能有效解决多项目开发中 …

Nlog配置文件nlog.config (.net core 6)

<?xml version="1.0" encoding="utf-8" ?> <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&quo…

重组抗体:从 “天然提取” 到 “基因定制”,抗体技术如何改写生物医药格局?

提到 “抗体”,你可能会想到疫苗接种后身体产生的 “免疫卫士”—— 但在科研、诊断和治疗中,我们需要的往往是 “精准可控” 的抗体。传统抗体(如多克隆抗体、杂交瘤单克隆抗体)要么特异性差、要么生产不稳定,而…

2025年主流数据分类分级工具全面对比与选型指南

2025年主流数据分类分级工具全面对比与选型指南在数据安全法规日益严格的2025年,企业选择合适的数据分类分级工具已成为合规运营和风险管控的核心环节。本文从实际选型需求出发,通过六大关键维度深度对比市场主流产品…

Http协议解析

一、概述 超文本传输协议(Hyper Text Transfer Protocol,简称HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。 1.1 发展历史起源:HTTP的发展是由蒂姆伯纳斯-李于1989…

大模型应用开发技术路线(下):智能代理与多模态应用开发指南

本文系统阐述智能代理与多模态应用的开发技术,从架构设计到实战落地,涵盖智能代理的四大设计模式与四步开发法,多模态应用的模型选择与模态融合策略,并总结五大常见陷阱及解决方案,助力开发者构建自主可控、自然高…