The 2025 ICPC Asia East Continent Online Contest (II) D题(数学) 题目链接奥术巨兽 - 题目 - QOJ.ac题目大意给定一个数组可以选择该数组的任意非空子序列当该子序列出售一个元素时其他元素可以加上失去元素的值一个子序列的价值定义为如果以最优的顺序售出该子序列中的其他巨兽最后剩下的一只巨兽所能达到的最大攻击力。计算该序列所有非空子序列的价值之和。请将结果模 998244353 后输出。题目思路对于子序列只有2个元素时例1子序列 [1, 2]取最大 2 → [12] [3]价值 3 1 2例2子序列 [1, 3]取最大 3 → [13] [4]价值 4 1 3例3子序列 [2, 3]取最大 3 → [23] [5]价值 5 2 3结论1对于长度为 2 的子序列[a, b]a ≤ b价值 a b对于子序列元素大于2个时例4子序列 [1, 2, 3]取最大 3 → [13, 23] [4, 5]取最大 5 → [45] [9]价值 9 1 2 2×3例5子序列 [1, 4, 6]取最大 6 → [16, 46] [7, 10]取最大 10 → [710] [17]价值 17 1 4 2×6例6子序列 [1, 2, 3, 4]取最大 4 → [14, 24, 34] [5, 6, 7]取最大 7 → [57, 67] [12, 13]取最大 13 → [1213] [25]价值 25 1 2 2×3 4×4一般规律对于升序排列的子序列[a₁, a₂, a₃, ..., aₖ]a₁ ≤ a₂ ≤ ... ≤ aₖ其价值为价值 a₁ a₂ 2×a₃ 4×a₄ 8×a₅ ... 2^(k-2)×aₖ虽然现在有计算每个子序列价值的公式了但是枚举每个子序列显然是会超时的那么我们可以使用贡献法对数组排序后考虑位置i的元素A[i]它前面有i个比它小的元素后面有N-1-i个比它大的元素。对于包含A[i]的子序列从前面i个元素中选t个0 ≤ t ≤ i从后面N-1-i个元素中任选每个可选可不选那么A[i]在这个子序列中是第t1小根据公式如果A[i]是第 1 小t0系数 1如果A[i]是第 2 小t1系数 1如果A[i]是第j小j ≥ 3即 t ≥ 2系数 2^(j-2) 2^(t-1)后面元素的选择不管前面选多少个后面的N-1-i个元素都可以任意选择方案数为2^(N-1-i)前面元素的选择: 从i个元素里面选t个0ti),也就是C(i,t)作为第1小t0方案数 C(i, 0) × 2^(N-1-i) 2^(N-1-i)贡献 A[i] × 2^(N-1-i)作为第2小t1方案数 C(i, 1) × 2^(N-1-i) i × 2^(N-1-i)贡献 A[i] × i × 2^(N-1-i)作为第 j≥3 小t≥2方案数 C(i, t) × 2^(N-1-i)系数 2^(t-1)贡献 A[i] × 2^(N-1-i) × C(i, t) × 2^(t-1)对所有 t ≥ 2 求和贡献 A[i] × 2^(N-1-i) × Σ_{t2}^i C(i, t) × 2^(t-1)通过二项式定理(a b)^i Σ_{t0}^i C(i, t) × a^(i-t) × b^t令 a1, b2(1 2)^i Σ_{t0}^i C(i, t) × 1^(i-t) × 2^t3^i Σ_{t0}^i C(i, t) × 2^t即Σ_{t0}^i C(i, t) × 2^t 3^i所以Σ_{t2}^i C(i, t) × 2^t 3^i - 1 - 2i因为Σ_{t2}^i C(i, t) × 2^t (Σ_{t0}^i C(i, t) × 2^t) - C(i,0)×2^0 - C(i,1)×2^1 (Σ_{t0}^i C(i, t) × 2^t) - 1 - 2i最后化简得S (1/2) × (3^i - 1 - 2i)那么位置i的总贡献A[i] × 2^(N-1-i) × [1 i (3^i - 1 - 2i)/2] (当 i ≥ 2)对于 i 2需要单独处理i 0贡献 A[0] × 2^(N-1)只能作为第1小i 1贡献 A[1] × [2^(N-2) 1×2^(N-2)] A[1] × 2^(N-1)作为第1小和第2小接着遍历剩余位置求和即可代码如下#include bits/stdc.h using namespace std; const int MAXN 2e5 9; using ll long long; const ll MOD 998244353; ll a[MAXN]; // 快速幂计算 a^b % MOD ll ksm(ll a, ll b) { ll res 1; while (b 0) { if (b 1) res res * a % MOD; a a * a % MOD; b 1; } return res; } // 求逆元inv(b) b^(MOD-2) % MOD ll inv(ll b) { return ksm(b, MOD - 2); } void solve() { int n; cin n; for (int i 1; i n; i) { cin a[i]; } sort(a 1, a 1 n); ll ans 0; ll inv2 inv(2); // 2 的逆元 for (int i 1; i n; i) { ll coef; // 贡献系数 if (i 1) { // 位置 1只能作为第1小 // 贡献 a[1] × 2^(n-1) coef ksm(2, n - 1); } else if (i 2) { // 位置 2可以作为第1小或第2小 // 贡献 a[2] × [2^(n-2) 1×2^(n-2)] a[2] × 2^(n-1) coef ksm(2, n - 1); } else { // 位置 i 3 // 贡献系数 2^(n-i) × [1 (i-1) sum3[i-1]] // 其中 sum3[i-1] (3^(i-1) - 1 - 2(i-1)) / 2 // 计算 3^(i-1) ll pow3 ksm(3, i - 1); // 计算 sum3 (3^(i-1) - 1 - 2(i-1)) / 2 ll sum3 (pow3 - 1 - 2LL * (i - 1)) % MOD; if (sum3 0) sum3 MOD; sum3 sum3 * inv2 % MOD; // 除以 2 // 计算 2^(n-i) ll pow2 ksm(2, n - i); // 系数 2^(n-i) × [1 (i-1) sum3] ll part (1 (i - 1) sum3) % MOD; coef part * pow2 % MOD; } ans (ans coef * a[i]) % MOD; } cout ans \n; } int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t; cin t; while (t--) { solve(); } return 0; }

相关新闻

最新新闻

基于SpringBoot的予你民宿管理系统(源码+lw+部署文档+讲解等)

基于SpringBoot的予你民宿管理系统(源码+lw+部署文档+讲解等)

联系博主 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 …

2026/9/3 6:04:58
零基础部署 OpenClaw :全程可视化点击,环境配置它自己搞定

零基础部署 OpenClaw :全程可视化点击,环境配置它自己搞定

📌 说明 本文基于 OpenClaw 3.1.0 版本进行讲解,整套流程采用图形可视化交互模式,整合包内置全部运行依赖,普通使用者即可完整复现整套部署操作。 ✨核心亮点: 全程可视化图形交互界面,自动补齐全部运行依赖…

2026/9/3 6:04:58
家庭IPTV部署指南:基于iptv-org项目的M3U播放列表实战

家庭IPTV部署指南:基于iptv-org项目的M3U播放列表实战

在家庭网络环境中,通过软件方式接收和播放 IPTV 信号已经成为一种常见需求。无论是想将电视信号接入智能电视、机顶盒,还是在手机、电脑上观看,都需要一套稳定可靠的播放列表和配置方案。iptv-org/iptv 项目提供了一个开源的 IPTV 频道集合&a…

2026/9/3 6:04:58
从选题到引用:开题季论文AI工具全流程搭配攻略

从选题到引用:开题季论文AI工具全流程搭配攻略

又到开题季,很多同学的日常是:一边对着空白文档发呆,一边在十几个AI工具之间反复横跳。一会儿让大模型想题目,一会儿让搜索工具找文献,最后还要手动改参考文献格式,折腾半天,开题报告还是没成型…

2026/9/3 6:04:58
Airi框架:快速构建AI驱动的Web应用完整指南

Airi框架:快速构建AI驱动的Web应用完整指南

在开源项目领域,moeru-ai/airi 作为一个基于人工智能的网页应用框架,为开发者提供了快速构建智能交互界面的能力。这类框架的核心价值在于将复杂的 AI 能力封装成易于使用的组件,让前端开发者也能轻松集成自然语言处理、图像识别等高级功能&a…

2026/9/3 6:04:58
三维雷达目标跟踪的粒子滤波器MATLAB实现

三维雷达目标跟踪的粒子滤波器MATLAB实现

简介:本资源是一套面向MATLAB初学者及雷达信号处理从业者的三维目标跟踪实战代码,聚焦无迹卡尔曼与粒子滤波融合的雷达跟踪建模问题,解决复杂环境下机动目标的状态估计与轨迹预测难题。压缩包共12个文件(8个核心.m函数、2个说明文…

2026/9/3 5:59:58