P10627 [JOI Open 2024] 中暑 / Heat Stroke

news/2025/11/9 19:59:47/文章来源:https://www.cnblogs.com/XP3301Pipi/p/19205123

P10627 [JOI Open 2024] 中暑 / Heat Stroke

P10627 [JOI Open 2024] 中暑 / Heat Stroke - 洛谷 (luogu.com.cn)

Solution

限制:在一个人坐飞机之前,两边的医院必须住满。

先考虑 Sub4,每条路上只有前两个人有用,所以记录一下他们的决策(向左,向右,坐飞机),然后分类讨论转移到下一条道路。

\(c_i>1\) 时,上面的做法直接变成指数级的了。首先缩减状态,在对一条道路上的人决策时最大的难点是不知道两边的医院是否已经住满,所以考虑提前钦定。

\(f_{i,j,k}\) 为考虑前 \(i\) 条道路,第 \(i\) 条道路向右边送了 \(j\) 个,且 \(i+1\) 医院在 \(k\) 时刻就住满了的最大值。\(k=m+1\) 表示没有住满。

\(S_{i,j}\) 为第 \(i\) 条道路前 \(j\) 个时刻出现了多少人,\(t_{i,j}\) 为第 \(i\) 条道路第 \(j\) 个人什么时候出现。

\(f_{i-1,j,k}\) 转移到 \(f_{i,j',k'}\),分类讨论:

  • \(k\le k'\)

    \(x=S_{i,k'},y=S_{i,m}-S_{i,k'}\)。那么这 \(x\) 个人都进了医院,\(y\) 个人都坐了飞机。

    其中 \(j'\) 个人向右走,\(x-j'\) 个人向左走,得到 \(j+x-j'=C_i\),于是 \(j\) 是固定的。

    还需要限制 \(t_{i,x-j'}\le k\),即 \(t_{i,C_i-j}\le k\)。前缀和优化转移。

  • \(k>k'\)

    \(x=S_{i,k},y=S_{i,m}-S_{i,k}\)

    还需要限制 \(t_{i,x-j'}\le k\),即 \(t_{i,C_i-j}\le k\)。前缀和优化转移。

  • \(k=m+1\)

    没有人会坐飞机。

    得到 \(j+x-j'\le C_i\),固定 \(j'\)\(j\) 是一段前缀,前缀和优化转移。

状态总数 \(O(n^2)\),转移 \(O(1)\)。复杂度 \(O(n^2)\)

int n,c[N],m,a[N];
int cnt[N][N],tim[N][N],tot[N],lim[N];
int f[2][N][N],g[2][N][N],h[2][N];signed main(){//静心,long long,数组大小,空间,复杂度,进包,格式read(n);for(int i=1;i<=n;i++) read(c[i]);read(m);for(int i=1;i<=m;i++){read(a[i]);++tot[a[i]];tim[a[i]][tot[a[i]]]=i;++cnt[a[i]][i];}for(int i=1;i<=n;i++){lim[i]=min(c[i+1],tot[i]);for(int j=1;j<=m+1;j++)cnt[i][j]+=cnt[i][j-1];for(int j=tot[i]+1;j<=8000;j++) tim[i][j]=m+5;}memset(f,-0x3f,sizeof(f));memset(g,-0x3f,sizeof(g));memset(h,-0x3f,sizeof(h));for(int i=0;i<=m+1;i++) f[0][0][i]=0,h[0][i]=0;for(int i=tim[1][c[1]];i<=m+1;i++) g[0][0][i]=0;for(int i=1;i<=n;i++){int ii=i&1;for(int j=0;j<=lim[i];j++){memset(f[ii][j],-0x3f,sizeof(f[ii][j]));memset(g[ii][j],-0x3f,sizeof(g[ii][j]));}memset(h[ii],-0x3f,sizeof(h[ii]));for(int j=0;j<=lim[i-1];j++){for(int k=0;k<=m;k++){if(tim[i][c[i]-j]>k) continue;int x=cnt[i][k],y=cnt[i][m+1]-cnt[i][k];int tj=j-c[i]+x;if(tj<0||tj>lim[i]||k<tim[i][tj]) continue;Ckmax(f[ii][tj][k],f[ii^1][j][k]+y);}}for(int j=0;j<=lim[i];j++){for(int k=m;k>=tim[i][j];k--)Ckmax(f[ii][j][k],f[ii][j][k+1]);}for(int j=0;j<=lim[i];j++){for(int k=tim[i][j];k<=m+1;k++){int x=cnt[i][k],y=cnt[i][m+1]-cnt[i][k];int tj=c[i]-x+j;if(tj>=0) Ckmax(f[ii][j][k],h[ii^1][min(tj,lim[i-1])]);if(tj>=0&&tj<=lim[i-1]) Ckmax(f[ii][j][k],g[ii^1][tj][k]+y);}}for(int j=0;j<=lim[i];j++){if(!j) h[ii][j]=f[ii][j][m+1];else h[ii][j]=max(h[ii][j-1],f[ii][j][m+1]);for(int k=tim[i][j];k<=m+1;k++){if(k) g[ii][j][k]=g[ii][j][k-1];if(tim[i+1][c[i+1]-j]<=k) Ckmax(g[ii][j][k],f[ii][j][k]);}}}int ans=0;for(int i=0;i<=m;i++)Ckmax(ans,f[n&1][0][i]);printf("%d\n",ans);return 0;
}

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

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

相关文章

从监听风险到绝对隐私:Zoom偷听门后,Briefing+CPolar重新定义远程会议安全标准 - 教程

从监听风险到绝对隐私:Zoom偷听门后,Briefing+CPolar重新定义远程会议安全标准 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important…

【做题记录】多校-ds

C. [Ynoi2005] rmscne 直接做不好维护,考虑扫描线。用线段树对每个位置 \(i\) 维护 \(p_i\) 表示 \([i,p_i]\) 是 \([i,r]\) 的最小的合法子区间。维护方式很简单,当加入 \(a_r\) 时,设上一次出现的位置为 \(j\),则…

11-08 题

11-08 题 目录11-08 题P5405 [CTS2019] 氪金手游 - 洛谷AT_agc036_f [AGC036F] Square Constraints - 洛谷F - Almost Sorted 2G - One Time Swap 2P13004 [GCJ 2022 Finals] Schrdinger and Pavlov - 洛谷Problem - 1…

POSIX兼容系统上read和write系统调用的行为总结

关于UNIX和Linux的宣传语中,一切皆文件应该是最广为人知的一句。 不管是普通文件,还是硬件设备、管道、网络套接字,在Linux甚至还有信号和定时器都共享一套相似的api,大家可以用类似的代码完成各种不同的任务,大大…

AI也能管文件?RustFS+Claude实现智能存储自动化!

AI也能管文件?RustFS+Claude实现智能存储自动化!2025年,当Claude 4.5宣布可​连续编程30小时不"断片" ​,而RustFS凭借零GC设计将存储性能提升42% 时,我们终于意识到:AI管理存储系统的时代已经到来。一…

跟着小码学算法Day16:对称二叉树 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

摸鱼笔记[3]-给windows添加类似macOS的按空格预览

🌟 神器「QuickLook」让 Windows 也能像 macOS 一样,空格键一按👇 ✨ 视频 / 图片 / PDF / PSD / 压缩包…统统秒开!零加载零等待~摘要 🌟 神器「QuickLook」让 Windows 也能像 macOS 一样,空格键一按👇…

11.8 联考总结

11.8 联考总结 T1题意较复杂,读懂之后比较简单。发现T3是计数题,很好。先开 T3 ,比想象中简单,思路非常自然。回去看T2发现有简单 \(O(n\log n)\) 做法,84分!但我想得非常复杂,但还有更简单的 \(O(n^2)\),52分…

Spring BeanDefinition接口

[[Spring IOC 源码学习总笔记]] BeanDefinition BeanDefinition 主要是用来描述Bean,主要包括:Bean的属性、是否单例、延迟加载、Bean的名称、构造方法等。 简而言之: 在容器中的 一个Bean 对应一个 BeanDefinition…

pythontip 计算字符串中的音节数

编写一个程序来计算一个单词中的音节数。 音节之间由连字符分隔。例如: beau-ti-ful => 三个音节 cat => 一个音节 re-frig-er-a-tor => 五个音节 定义函数count_syllables()的函数,该函数接受一个参数word…

深入解析:26-基于STM32的小区智能井盖监测系统设计与实现

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025/11/09 LGNOIpR23

如果不是直接写 100pts 做法,就是赛时不会,或者对 AC 做法有很大启发。 T1 题意简述 求 \(a(1+p+pq)=n\) 整数解数量,其中 \(n\) 是给定的, \(p,q\) 均不能取 \(1\)。 sol 考虑试除法,一遍试出所有的 \(a\),然后…

Python “值层面” 该怎么说?别再混淆 “字面量” 与 “不可变对象”

为帮助Python入门者厘清“值/字面量/对象”的概念混淆,我将围绕“为什么‘a的值是10’表述不准确”这一痛点,结合内存模型与代码示例,详细解析字面量和不可变对象的区别,最终总结认知误区与正确表述方式。# Python…

11.7 联考总结

11.7 联考总结 T1比较简单,随便找找支配关系就做完了。T2之前听 nkp 讲过题意比较畏惧,简单思考了一下就放弃了。T3是很好的计数题,很容易想到 \(O(n^2)\) 做法。但是有个组合数下指标求和难以优化掉,尝试换别的做…

pythontip 返回字典的键值

编写一个程序,分别按字母顺序返回字典的键和值。 定义函数get_sorted_keys_values(),参数为dict_obj(字典类型)。 在函数内部,返回一个由两个列表组成的列表:一个列表是按字母顺序排列的字典键,另一个列表是它们对…

详细介绍:SQL入门:行列转换实战-从基础到高级

详细介绍:SQL入门:行列转换实战-从基础到高级pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &…

折腾笔记[36]-调用海康SDK实现相机拍照

使用c#调用海康SDK实现相机拍照.摘要 使用c#调用海康SDK实现相机拍照. 前言 本文目的是分享人工踩坑经验, AI搜索引擎可以更快给出正确结果(用于投喂AI😂). 关键信息海康SDK版本: 4.6.x .net8框架 封装: HikVisionCo…

CF840C On the Bench 分析

题目概述 题目链接:https://www.luogu.com.cn/problem/CF840C。 给你 \(n\) 给数,将他们排列成一个序列并满足相邻两项 \(a_i,a_{i+1}\) 相乘不为平方数。问方案。 分析 我只说明一种解法,其他类的解法总结见:http…

HubSpot如何构建MCP服务器实现AI代理集成

HubSpot产品执行副总裁分享公司如何基于Model Context Protocol构建远程MCP服务器,详细解析技术架构选择、认证实现、与现有系统集成等核心挑战,以及AI代理在CRM领域的实际应用场景。HubSpot的MCP实现:CRM公司的AI代…

CSP-S 2025 趋势记

有个人 CSP-S 寄飞了,我不说是谁。感觉模拟赛也没啥动力打了。 T1 写了 \(10\) min 切了,非常自信。T2 写了 \(30\) min 被卡成 \(80\) 了,趋势。 然后开始传统艺能发呆,T3 看半天看错题了,看成可以替换无限次了,…