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

CF1606E Arena 题解(动态规划)

考虑设 \(f_{i,j}\) 表示现在存活 \(i\) 个人,血量最大的人为 \(j\)。这么设是因为注意到有没有胜者其实之和血量最大的是谁,以及有多少个血量最大的有关。

边界情况 \(f_{1,i}=0\)

考虑转移。如果 \(j<i\),则所有人都会在下一轮死掉,就没有胜者,所以此时 \(f_{i,j}\) 就是所有合法的情况总数,也就是 \(j^i-(j-1)^i\),即值域 \([1,j]\) 序列个数减 \([1,j-1]\) 序列个数。

如果 \(j\ge i\),则我们枚举这一轮过去后死了 \(0\le k\le i\) 个人,选这 \(k\) 个人有 \(i \choose k\) 种选法,他们要死掉所以他们的血量一定要在 \([1,i-1]\) 之间,一共有 \((i-1)^k\) 种合法状态,最后乘上 \(f_{i-k,j-(i-1)}\)

时间复杂度 \(O(n^3)\),但是跑不太满。

const int MAXN = 505, mod = 998244353;
int n, x, C[MAXN][MAXN], f[MAXN][MAXN];int quickpow(int a, int b) {int ret = 1;while (b) {if (b & 1) ret = ret * a % mod;a = a * a % mod; b >>= 1;}return ret;
}int add(int x, int y) {x += y;if (x >= mod) x -= mod;return x;
}
int sub(int x, int y) {x -= y;if (x < 0) x += mod;return x;
}
int mul(int a, int b) {return a * b % mod;
}void work() {cin >> n >> x;for (int i = 1; i <= n; ++i) C[i][0] = 1, C[i][1] = i;for (int i = 1; i <= n; ++i) {for (int j = 2; j <= i; ++j) {C[i][j] = (C[i - 1][j] + C[i - 1][j - 1]) % mod;}}f[1][0] = f[0][0] = 1;for (int i = 2; i <= n; ++i) {for (int j = 1; j <= x; ++j) {if (j < i) f[i][j] = sub(quickpow(j, i), quickpow(j - 1, i));else {for (int k = 0; k <= i; ++k) {f[i][j] = add(f[i][j], mul(C[i][k], mul(quickpow(i - 1, k), f[i - k][j - i + 1])));}}}}int ans = 0;for (int i = 1; i <= x; ++i)ans = add(ans, f[n][i]);cout << ans << endl;
}
http://www.gsyq.cn/news/25671.html

相关文章:

  • 正睿 2025 NOIP20 连测 Day5 做题记录
  • CSP-S 20
  • Flutter应用设置插件 - 轻松打开iOS和Android系统设置
  • CSP-S 22
  • /usr/bin/sudo 二进制文件的权限有问题,导致所有用户都无法使用 sudo
  • CSP-S 19
  • 研1转码自学黑马程序员Python第7天 | Python函数知识 - 指南
  • 从C10K到Reactor:事件驱动,如何重塑高并发服务器的网络架构
  • 数据范围
  • CF2107E Ain and Apple Tree
  • 2025,为什么公众号编辑器排版决定阅读完成率?——一次从流程到结果的深评
  • P14262 [ROI 2015 Day1] 自动好友
  • win10 升级 win11 后时间更新失败
  • Hands on Deep Learning Chapter 3 线性神经网络
  • 超越技术范畴:低代码如何重塑企业数字文化
  • 详细介绍:1、手把手教你入门设计半桥LLC开关电源设计,LLC谐振腔器件计算
  • 十六天
  • 20251019
  • 【上青了】
  • [VIM] reverse multiple lines in VIM
  • Tuack 生成比赛题目 PDF 笔记
  • 4060显卡也能玩转AI改图!Flux.1 Kontext Dev GGUF版本超详细入门教程 - 实践
  • 提升生产力:8个.NET开源且功能强大的快速开发框架
  • 使用c++14标准实现函数注册包装
  • 【VSCode中Java创建环境安装的三个层级之Maven篇】(Windows版)
  • 2025年不锈钢酸洗钝化液厂家推荐排行榜,环保型不锈钢管酸洗钝化液,不锈钢清洗钝化液,酸洗钝化处理工艺及不锈钢清洗剂公司推荐
  • 2025年法兰保护罩厂家推荐排行榜,阀门保温罩,法兰罩,法兰防溅罩,法兰保护套,专业防护与定制服务优质供应商
  • 百度网盘非会员下载慢怎么解决 - fosgrignonhto
  • d435i 标定 imu和相机 用来复现vins_fusion - 教程
  • K230基础-摄像头的使用 - 详解