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

25.11.03

AGC003E

哎我好菜怎么这个题卡半天。

首先想到可以把 \(a_i\) 单调栈干掉,然后倒着扫求出前面要重复多少次。

但是会剩下一段,需要单独做。

先不要想太复杂,考虑如何暴力,因为额外部分只关心长度和次数,因此设计一个关于这俩的递归。

考虑现在长度为 \(x\),需要乘上 \(y\),那么可以从前面找最大的 \(a_t\)\(x\) 就是若干个 \(a_t\) 和剩一段。

那么就可以拆成 \(a_t\) 多做一些次数以及新的额外部分,复杂度会发现显然是对数层递归。

底层的时候差分修改即可。

P14364

考虑一下从前往后填人,新来的过不过只取决于这个人和前面否掉的人数,感受出状态应该是 \(f(i,j)\) 表示考虑填 \(i\) 人,否了 \(j\) 人。

考虑 \(s=1\),那么新加这个人否不否取决于自身,若被否则 \(c_i\le j\),我们把 \(c_i\) 丢进桶可以知道有 \(cnt_j\) 人满足 \(c_i=j\) 以及 \(pre_j\) 人满足 \(c_i\le j\),看起来方案是 \(pre_j\)

但是这里面有些人可能已经在前面填了,因此应该是 \(pre_j-k\)\(k\) 是填入的 \(c_i\le j\) 的人数,于是我们把状态扩到 \(f(i,j,k)\)

这个时候要保持冷静,意识到两点:

  1. 每次 \(j\) 最多加一,移动时,只需考虑 \(c_i=j+1\) 中有多少人被填了。
  2. 这部分人的方案在前面算不进来,我们应该在此时枚举其个数并计算方案。

因此得到转移 \(f(i-1,j,k)\to f(i,j+1,k+l+1)\times(pre_j-k)\times\dbinom{i-k}{l}\times\dbinom{cnt_{j+1}}{l}\times l!\)

道理很好懂,剩下的什么没被否,是零然后 \(\le j\),是零然后 \(>j\) 都是容易的。

场上我给 \(j\) 减了个前面零的个数,而且 \(c_i\) 拍序而不是丢进桶里统计,导致写成了一摊给自己烧宕机了。

http://www.gsyq.cn/news/38992.html

相关文章:

  • win10安装neo4j-community-3.5.7-windows
  • 阅读笔记0
  • 个体户办理食品经营须知
  • 2025.11.3——1绿1蓝
  • 2025.11.3 - A
  • 【每日一面】实现一个深拷贝函数
  • MySQL排序算法
  • 20232314 2024-2025-1 《网络与系统攻防技术》实验四实验报告
  • 二、驱动基础(基于北京迅为电子)
  • Linux驱动开发学习日记(一)
  • 微软 Foundry Local - 本地 AI 推理解决方案
  • win10 下运行aoe2,报错,应用程序无法正常启动 0xc000022
  • AI浪潮下的学习与就业:机遇还是陷阱?
  • 如何从csdn中快速转载文章(转载)
  • 一行“优雅”代码踩爆3x3矩阵:Python列表乘法的“共享引用”陷阱
  • 【C】 static用法
  • 模拟赛 31
  • P1.python环境的配置和安装
  • CSP-S 2025 游寄喵
  • Windows 10操作技巧:如何在 Windows 10 中恢复永久删除的文件
  • 2026 年预估适用于 Windows 10_11 的 10 款最佳数据恢复软件
  • 2025 年 9 款最佳 PDF 文档管理编辑工具
  • flex:1 什么意思
  • ESP32 I2C通信
  • day05-智能换脸-12306出行建议-提取音频工作流
  • x./AC自动机
  • 怎么在现有App里融入AI对话能力
  • DFS 序 O(1) 求 LCA
  • 矿山通信如何实现全域一体化?迈威为煤矿装上了“智慧神经网络”
  • 哈希学习总结