[题解]P11126 [ROIR 2024] 三等分的数组 (Day 2)

news/2025/10/22 19:34:20/文章来源:https://www.cnblogs.com/Sinktank/p/19158778

P11126 [ROIR 2024] 三等分的数组 (Day 2)

考虑到数的选取与输入顺序无关,我们将数丢到桶里,记 \(c_x\)\(x\) 出现的次数。

那么我们取出三元组的过程可以描述为下面二者之一:

  • 选取 \(c\) 中的一个位置,将其减去 \(3\)
  • 选取 \(c\) 中连续的三个位置,将其减去 \(1\)

\(f[x][i][j]\) 表示当前考虑到 \(c\) 中的第 \(x\) 位,第 \(x\) 位消去了 \(i\) 个,第 \(x-1\) 位消去了 \(j\) 个,\(x-2\) 及之前的位置全部消去的答案。

这样设状态是可以正确转移的,因为能消除第 \(x-2\) 位的最大位置就是 \(x\),如果留到 \(x\) 之后就永远消不掉了。

我们可以枚举使用 \((x,x,x)\) 的次数 \(t\),则剩下的 \((i-3t)\) 必须全部用于使用 \((x-2,x-1,x)\),则有转移:

\[f[x][i][j]=\sum\limits_{t=0}^{\lfloor\frac{x}{3}\rfloor} f[x-1][j-(i-3t)][c_{x-2}-(i-3t)] \]

酱紫会 T,考虑优化。

我们发现(可以归纳理解):

\[\begin{aligned} &\quad\sum\limits_{t=0}^{\lfloor\frac{x}{3}\rfloor} f[x-1][j-(i-3t)][c_{x-2}-(i-3t)]\\ &=f[x][i-3][j]+f[x][j-i][c_{x-2}-i]\\ \end{aligned} \]

所以不需要枚举 \(t\),状态转移优化到 \(O(1)\)

考虑分析这样做的时间复杂度。

对于 \(f[x][i][j]\)\(i,j\) 的上界是 \(c_x,c_{x-1}\),所以总状态数是:

\[\sum\limits_{i=1}^m c_i c_{i-1} \]

状态数是 $O(m^2)$ 的

\[\begin{aligned} &\quad\sum\limits_{i=1}^m c_i c_{i-1}\\ &\le \sum\limits_{i=1}^m c_i^2&(\text{排序不等式})\\ &\le m^2 \end{aligned} \]

状态数是 $O(n^2)$ 的

我们将 \(c\) 按下标的奇偶性两两分组:

\[A=c_1+c_3+c_5+\dots\\ B=c_2+c_4+c_6+\dots \]

展开 \(A\times B\) 可知:

\[\sum\limits_{i=1}^m c_i c_{i-1}\le A\times B \]

\(A+B=n\),据均值不等式知 \(A\times B\le \frac{n^2}{4}\)

所以原式是 \(O(n^2)\) 的。

所以时间复杂度是 \(O(m\times \min(n^2,m^2))\),而且跑不满。

只是空间需要注意滚动数组。

点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int N=5e3+5,M=5e3+5,P=1e9+7;
int n,m,c[M],f[2][N][N];
signed main(){cin>>n>>m;m+=2;for(int i=1,x;i<=n;i++) cin>>x,x+=2,c[x]++;f[0][0][0]=1;for(int x=3,cur=1;x<=m;x++,cur^=1){for(int i=0;i<=c[x];i++){for(int j=0;j<=c[x-1];j++){if(i>=3) f[cur][i][j]=f[cur][i-3][j];else f[cur][i][j]=0;if(c[x-2]>=i&&j>=i) (f[cur][i][j]+=f[cur^1][j-i][c[x-2]-i])%=P;}}}cout<<f[m&1][c[m]][c[m-1]]<<"\n";return 0;
}

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

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

相关文章

Acrobat Pro DC 2025下载及破解安装教程,附永久免费免激活中文版Acrobat Pro DC安装包(稳定版)

一、Acrobat Pro DC 2025软件下载[软件名称]: Acrobat Pro DC 2025(稳定版)[软件大小]: 1.63GB[安装环境]:Win 10及以上系统[下载链接]: (建议手机保存后到电脑端打开,下载解压无需任何密码)夸克:https://pan.qua…

VSLAM 十四讲--阅读中知识点记录

1. 前言砚上三五笔,落墨鹧鸪啼本文用于记录:VSLAM相关。 PS:笔者梦到哪里写哪里,毫无逻辑可言。。。 如有不对,欢迎评论区指正! 2. 正文 2.1 slamsimultaneous location and mapping 同步定位和建图相机:单目相…

20232307 2025-2026-1 《网络与系统攻防技术》实验二实验报告

20232307 2025-2026-1 《网络与系统攻防技术》实验二实验报告 1. 实验内容 相关知识:后门就是不经过正常认证流程而访问系统的通道。后门类型:编译器留后门、操作系统留后门、应用程序中留后门、还有潜伏于操作系统中…

Fiddler Script语句整理

请求函数: static function OnBeforeRequest(oSession:Sessiop){}响应函数: staticfunction OnBeforeResponse(oSession:Session){}修改样式语句:if (oSession.host.indexOf("mosoteach.cn") > -1) { …

微服务正在悄然消亡:这是一件美好的事

最近在做的事情正好需要系统地研究微服务与单体架构的取舍与演进。读到这篇文章,许多观点直击痛点、非常启发,于是我顺手把它翻译出来,分享给大家,也希望能给同样在复杂性与效率之间权衡的团队一些参考。 微服务正…

数据库学习篇(持续更新中)

在日常的开发中,常常会因为业务的复杂而编写复杂的数据库脚本。本篇记录博主在实际使用中的各种脚本及函数:人一旦有了梦想,怎么活都是有灵魂的!

Fortinet产品安全漏洞分析:FGFM协议未经认证连接重置漏洞

本文详细分析了Fortinet产品中的FGFM协议安全漏洞(CVE-2024-26008),该漏洞由于异常条件处理不当,允许未经认证的攻击者通过加密TCP请求重置fgfm连接,导致拒绝服务攻击风险。摘要 FortiGuard实验室发现FortiOS、Fort…

fiddler修改请求(修改搜索框的内容)

第一步:在fiddler中,在工具栏中单击“规则”——“自动断点”——“在请求前”,单击“Remove all”,清除干扰项 第二步:在浏览器中搜索“前端”并发送请求,返回fiddler,在左侧“会话列表”中,选择“前端”的数据…

20251022

今日一切正常,抽时间看看javaweb

10月22号

今天进行了离散数学和马克思主义的学习。

Python practice argvparser and config(yaml, json, xml) - ENGINEER

Python practice argvparser and config(yaml, json, xml)Python practice argvparser and config(yaml, json, xml)Time is like a fleeting show!

Yolo11分割模型

C#中部署 Yolo11分割模型存在两个输出分支。这里导出模型使用一个包含两个类别的数据集训练的。output0对应的分支。可以看到其Shape为[1,38,21504]。对于第二维度(38),前4个数据分别表示检测框的cx、cy、w、h。后两…

将“百度”的URL改为“163网易云”(修改URL地址)

第一步:打开fiddler,单击“规则”选项卡——“自动断点”——“在请求前” 第二步:在浏览器的地址栏中输入“baidu.com”并回车,返回fiddler 第三步:在左侧的“会话列表”,“URL地址”栏中找到“www.baidu.com:4…

星旗笔试

1.进程和线程区别 进程是系统进行资源分配和调度的基本单位,线程是 CPU 调度和执行的最小单位。 进程:是程序的一次动态执行过程,是系统进行资源分配和调度的独立单位。每个进程拥有独立的内存空间、文件描述符、寄…

第二次小组作业

第二次小组作业这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/homework/13559这个作业的目…

文学伦理学批评导论——

10.22学习文学伦理学第6周Week 6 伦理与道德的联系和区别 联系 伦生 理成 道化德:伦生理,理成道,道化德 区别 1、联系 2、区别 (1)伦理强调关系;道德强调个体(道德绑架) (2)伦理是双向性的义务;道德是单向性的义务…

智联笔记项目——251022登录注册、后端管理及内容类型处理优化

登录注册、后端管理及内容类型处理优化 在笔记系统的迭代中,基于原有代码,新增了登录注册功能、后端管理模块,并解决了 Markdown 与富文本内容混淆的问题。 本文将详细介绍这些功能的实现思路与代码修改细节,适合记…