P13573 [CCPC 2024 重庆站] Pico Park

news/2025/11/12 20:14:30/文章来源:https://www.cnblogs.com/xxmbb/p/19215264

P13573 [CCPC 2024 重庆站] Pico Park

题意:

游戏中,有 \(n\le 500\) 名玩家,依次站在数轴的 \(1,2,3, \dots, n\) 处,第 \(i\) 名玩家有一个面向的方向 \(d_i\),为向左或向右。

每名玩家手里有一把缩小枪,玩家会按照一个排列 \(p\) 的顺序行动,当轮到玩家 \(x\) 行动时:

  • 若该玩家已经被缩小,则其不会进行任何行动。
  • 否则,其会向其面对的方向发射子弹,子弹会击中面对方向的第一个未被缩小的玩家(若面对方向已经没有玩家,则不会击中任何人)。被击中的玩家会立刻被缩小。

对于每一个 \(1\leq k\leq n\),有多少个排列会使最终剩余 \(k\) 个未被缩小的玩家

由于答案很大,你只需要输出答案对 \(998244353\) 取模后的值。

思路:

因为每次射击只能攻击与自己最近的人,刻画生死关系:\(x\)\(y\) 连边当且仅当 \(x\) 杀死 \(y\),可以发现删除操作一定是若干个不交链,且每条链的 编号区间 \([l,r]\) 连续且不交 。但是我们无法保证每一个编号区间都可以形成一条合法的生死关系。

考虑相邻两个人会被如何消除:若出现了 \(s_i=L \and s_{i+1}=R\) ,那么显然会至少导致两个人存活,所以一个编号序列中不可能存在 \(LR\) 类状物。由此可得:一个合法的编号区间所对应的字符串一定形如:\(R\dots RL\dots L\)

因为一条链上最终只能存活一个人,加上我们在前面提到的生死链不交,所以考虑 区间 dp

考虑一个幸存者 \(x\) 在一个合法编号区间 \([l,r]\and r-l+1\ge 2\) 的位置:

  • \(x=l\)

    • \(S_x=L\) 时,无论如何都无法存活

    • \(S_x=R\) 时,删去该端点,使编号区间变成 \([l+1,r]\) ,仍然会是一个合法编号区间,显然可以先让 \([l+1,r]\) 删到只剩一个幸存者 \(y\),然后再让 \(x\) 攻击 \(y\)

  • \(l< x<r\)

    把当前区间分成三段:\([l,x-1],x,[x+1,r]\) ,因为 \(x\) 未被删除,所以区间 \([l,x-1]\) 内的攻击无法攻击到 \([x+1,r]\) ,因此可以把这条链拆成独立的两条链 \([l,x-1],[x+1,r]\) ,因为一条链最终只能存活一个人,因此在 \(x\) 的两边各有一个人等待删除,但 \(x\) 的出度只有 \(1\) ,因此至少有两个人存活。

  • \(x=r\) ,同 \(x=l\)

所以一个合法编号区间的幸存者只会存在于区间的两个端点,我们设 \(g_{l,r}\) 表示 \([l,r]\) 是合法区间的排列方案数。有转移

\[g_{l,r}=(g_{l,r-1}\and (S_r=L))+(g_{l+1,r}\and (S_l=R)) \]

注意到我们此时没有安排第一个被删除的人在排列中的位置,因为第一个人不能攻击到区间内外的任意一个人,所以第一个人在排列中的位置一定在被删除之后,所以我们仍需要

\[g_{l,r}=g_{l,r}*(r-l) \]

但是当 \(l=1,S_1=L\) 时,包含 \(1\) 的合法区间一定形如 \(L\dots L\),此时 \(1\) 一定被第一个删除,且 \(1\) 可以攻击外部,所以 \(g_{1,i}=g_{1,i}+1\)

\(r=n,S_n=R\) 时同理。

那么我们最后的任务是合并这若干个合法区间,设 \(f_{i,j}\) 表示已经合并到了 \(i\) 号位置,当前有 \(j\) 个区间。因为每个区间有且仅有一人存活,所以答案即为 \(f_{n,j}\)

\(f\) 的转移是容易的。

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

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

相关文章

手工安装gcc-13.3.0

手工安装gcc-13.3.0wget https://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.2.1.tar.bz2wget https://gcc.gnu.org/pub/gcc/infrastructure/mpfr-4.1.0.tar.bzwget https://gcc.gnu.org/pub/gcc/infrastructure/mpc-1…

深入解析:Cookie、Session、JWT、SSO,网站与 APP 登录持久化与缓存

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

gowin ide linux安装教程

1.下载,下载地址 https://www.gowinsemi.com.cn/software/index 我下载的版本是Gowin_V1.9.11.03_Education_Linux ps:云源软件和云源编程器的区别: 云源软件包含一系列工具如ide,综合工具,编程器等等 云源编程器就…

AT_arc111_f [ARC111F] Do you like query problems?

首先这个取 \(\min,\max\) 操作很不好做。 并且对可能的操作序列计数很不好做。 参考 【题解】ARC111F Do you like query problems?。 考虑先转期望,求出每种操作序列的期望结果。 发现序列中每个位置都不受其他位置…

Win7 隐藏文件夹盘符

1、打开注册表编辑器 regedit 2、找到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer 3、 右键新建 DWORD-32 值:名称修改为:NoDrives 十进制值按下表填写4、重启系统生效!

pythontip 按条件过滤字典

编写一个程序,根据某个条件过滤字典值。 对于这个挑战,条件是字典值应该大于整数k。 定义函数filter_dict_values(),有两个参数:字典mixed_dict和整数k。 在函数内部,创建一个新字典,并从mixed_dict过滤值不是整…

DotNetGuide 突破了 9.5K + Star,一份全面的C#/.NET/.NET Core学习、工作、面试指南知识库!

DotNetGuide 介绍 DotNetGuide是一个专注于C#/.NET/.NET Core学习、工作、面试指南的 GitHub 知识库,该知识库记录、收集和总结了C#/.NET/.NET Core基础知识、学习路线、开发实战、编程技巧练习、学习视频、文章、书籍…

如何把华为mate 60手机备份到移动硬盘

如何把mate 60备份到移动硬盘华为Mate 60可通过USB OTG连接移动硬盘进行数据备份,以下是具体操作步骤: 连接移动硬盘使用USB OTG数据线将移动硬盘连接至Mate 60的Type-C接口。 确保移动硬盘已插入电源(部分硬盘需额…

Vue实例学习

vue的学习 1.初始化渲染 第一步构建用户界面,第二步创建vue实例初始化渲染 核心步骤分为4步: 1.准备容器,假设这个容器的唯一id是app 2.引包(vue的版本),vue有两种版本开发版本/生产版本 开发版本有完整的警告和…

2.2 语言处理程序基础

2.2 语言处理程序基础2.2 语言处理程序基础以编译方式翻译C/C++源程序的过程中,类型检查在( )阶段处理。 A. 词法分析 B. 语义分析 C. 语法分析 D. 目标代码生成正确答案是 B。 解析 本题考查的是编译器工作过程。…

Ai元人文:价值的“迷思”与“归真”——从家庭之爱到文明共生

Ai元人文:价值的“迷思”与“归真”——从家庭之爱到文明共生 ——Ai元人文构想 价值的“迷思”与“归真”:从家庭之爱到文明共生 第一章:困局——迷失在词语的丛林 我们生活在一个价值词汇泛滥的时代。“公平”、“…

MATLAB 数据可视化教程:从基础到进阶

MATLAB 数据可视化教程:从基础到进阶以下是一个全面的 MATLAB 数据可视化教程,涵盖从基础绘图到进阶技巧的内容: 1. 基础绘图函数 MATLAB 提供了多种基础绘图函数,适用于不同类型的数据展示。 1.1 二维线图 (plot)…

在ec2上部署qwen3-VL-2B模型

测试环境如下 g5.4xlarge EBS: 200GB AMI:ami-0a83c884ad208dfbc ubuntu/images/hvm-ssd-gp3/ubuntu-noble-24.04-amd64-server-20250419安装nvidia驱动和cuda toolkit 查看PCIE设备性能参数参考,https://www.nvidia…

37

所学时间:9小时 博客量1

【数据结构】第六章启航:图论入门——从零掌握有向图、无向图与简单图

【数据结构】第六章启航:图论入门——从零掌握有向图、无向图与简单图【数据结构】第六章启航:图论入门——从零掌握有向图、无向图与简单图 导读大家好,很高兴又和大家见面啦!!!【数据结构】这门课主要会学习2种…

日总结 26

Git 是由 Linus Torvalds 于 2005 年开发的分布式版本控制系统,核心特点包括分布式架构(本地仓库含完整历史,支持离线工作)、高效快照式版本跟踪、低成本强功能分支管理、SHA-1 哈希保障的数据完整性及非线性开发支…

Daily Scrum 2025.11.12

第 6 次会议 - 日期:2025/11/12:shr参与人:zc(负责人)、lzy、zmj、xhy、shr 上次会议后完成的工作:完成了推荐算法在 Node.js 环境下的初步实验,并验证了与 Vue.js 前端通信的可行性。 当前问题:推荐算法输出结…

完整教程:mit6s081 lab8 locks

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

软件工程学习日志2025.11.12

一、基本概念回顾 信息论基础公式 信息熵:度量样本集合纯度的指标 H(D) = -Σ(p_k log₂p_k) 信息增益:特征A对数据集D划分带来的信息提升 Gain(D,A) = H(D) - Σ(|Dᵛ|/|D| H(Dᵛ)) 信息增益率:解决信息增益对多…

[集训队互测 2025] 火花 做题记录

link 有点牛逼啊这题。 考虑你取路径和取含根连通块,这两部分的没有很明显的贪心关系,只能将它们同时 DP 决策。 对于 \(t = 0\) 的 subtask 有个很明显的做法,就是在 dfs 序上 dp,多重背包部分用单调队列优化。这…