Luogu P2460 [SDOI2007] 科比的比赛 题解

news/2025/1/15 17:27:28/文章来源:https://www.cnblogs.com/bluewindde/p/18401584

题意:给定 \(n \times m\) 的矩阵 \(A = (a_{ij})\) 和长为 \(m\) 的数列,矩阵的元素在 \([0, 1]\) 上。在矩阵每一行选择一个数,最大化选中的数的乘积的前提下最大化得分,但矩阵每一列至多选择一个数。求最大乘积和对应的最大得分。

考虑状压 DP,设 \(dp_{i, j}\) 表示已经处理前 \(i\) 列,状态集合为 \(j\) 的行已经选定时的最大乘积。

转移

\[dp_{i, j} = \sum\limits_{k \in j} dp_{i - 1, j - \{k\}} \cdot a_{i, k} \]

边界

\[dp_{i, 0} = 1 \]

答案

\[dp_{m, U} \]

其中 \(U\) 是全集。

最大得分容易与乘积同时转移。

时间复杂度 \(O(nm 2^n)\),滚动数组优化空间后可以通过 \(50\) 分。

考虑贪心,将矩阵每一行按 \(a_{i, j}\) 为第一关键字,\(s_j\) 为第二关键字降序排序,至多选择前 \(n\) 大的位置。

所以排序后将每一行可能被选的位置提出来做一次 DP,至多有 \(O(n^2)\) 个可能被选的位置,时间复杂度优化为 \(O(nm \log m + n^3 \log n + n^3 2^n)\),可以通过。

#include <algorithm>
#include <iomanip>
#include <iostream>using namespace std;typedef long double ld;const ld eps = 1e-10;int n, m;
int w[100005];
int s[100005];ld a[12][100005];
int b[12][100005];
int id[100005], len;
ld c[12][100005];ld dp[2][1050];
int f[2][1050];static inline void solve() {cin >> n >> m;int lim = 1 << n;for (int i = 1; i <= m; ++i)cin >> w[i];for (int i = 1; i <= n; ++i) {for (int j = 1; j <= m; ++j) {cin >> a[i][j];b[i][j] = j;}sort(b[i] + 1, b[i] + m + 1,[i](const int x, const int y) {return (abs(a[i][x] - a[i][y]) < eps)? (w[x] > w[y]): (a[i][x] - a[i][y] > eps);});for (int j = 1; j <= n && j <= m; ++j)id[++len] = b[i][j];}sort(id + 1, id + len + 1);len = (int)(unique(id + 1, id + len + 1) - id - 1);for (int i = 1; i <= len; ++i) {for (int j = 1; j <= n; ++j)c[j][i] = a[j][id[i]];s[i] = w[id[i]];}dp[0][0] = 1;for (int i = 1; i <= len; ++i) {for (int j = 0; j < lim; ++j) {dp[i & 1][j] = dp[(i + 1) & 1][j];f[i & 1][j] = f[(i + 1) & 1][j];for (int k = 1; k <= n; ++k) {if (j & (1 << (k - 1))) {ld val = dp[(i + 1) & 1][j ^ (1 << (k - 1))] * c[k][i];if (val < eps)continue;if (val - dp[i & 1][j] > eps) {dp[i & 1][j] = val;f[i & 1][j] = f[(i + 1) & 1][j ^ (1 << (k - 1))] + s[i];} else if (abs(val - dp[i & 1][j]) < eps)f[i & 1][j] = max(f[i & 1][j], f[(i + 1) & 1][j ^ (1 << (k - 1))] + s[i]);}}}}cout << fixed << setprecision(12) << dp[len & 1][lim - 1] << endl;cout << f[len & 1][lim - 1] << endl;
}signed main() {
#ifndef ONLINE_JUDGEfreopen("P2460.in", "r", stdin);
#endifios::sync_with_stdio(false);cin.tie(0);cout.tie(0);solve();return 0;
}

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

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

相关文章

中位值,不能用平均值

北京平均工资出炉啦!这些职业收入最高! 北京生活 近日,北京人社局发布了 《2024年北京市人力资源市场 薪酬状况报告(二季度)》 咱们打工人赶紧了解一下 北京的薪酬水平 在找工作的时候也好有个参考 北京2024年人力资源市场薪酬状况报告(二季度)8月31日,北京市人社局…

发布页说明(必看)

作为一枚INFJ的大学生,有时候比较忙(呜呜),博客园更新可能不太及时 最新的笔记可以在星途-Notion笔记看到 如果你有好的建议或者学习路线,文章纠正等等balabala,或者想讨论游戏开发相关的技术,亦或是闲聊,欢迎发送邮箱至starrytracesky@outlook.com群星的轨道终将交汇.…

[nacos] Nacos 1 架构与原理

1 NACOS 架构与原理 架构推荐文献https://nacos.io/en-us/docs/architecture.html基本架构逻辑架构服务管理:实现服务CRUD、域名CRUD、服务健康检查、服务权重管理等。 配置管理:实现配置的CRUD、版本管理、灰度管理、监控管理、推送轨迹、聚合数据等。 元数据管理:提供元数…

真人模特失业?AI虚拟试衣一键成图,IDM-VTON下载介绍

在电商行业竞争尤为激烈的当下,除了打价格战外,如何有效的控制成本,是每个从业者都在思考的问题 IDM-VTON是一个AI虚拟换装工具,旨在帮助服装商家解决约拍模特导致的高昂成本问题,只需一张服装图片,就可以生成各种身穿该服装的模特,大大简化了传统的产品展示过程 IDM-VT…

用空间清理调理风13重要物品14别人的杂物15杂乱与风水符号学

13 重要物品 在清理杂物时,别忘了大件东西。你一直讨厌的那件可怕的旧家具、堵塞客厅的三角钢琴、你从来不用的卷起来的地毯、后院生锈的汽车、角落里积满灰尘的十年前瑞士奶酪植物。 有些东西非常大,搬动它们是一项挑战,所以你要学会看穿它们的艺术,就像它们不再存在一样。…

秸秆禁烧烟火识别系统

秸秆禁烧烟火识别系统一旦检测到烟雾,秸秆禁烧识别系统将自动监测监控画面中是否存在秸秆焚烧处理,不用人工干涉。当秸秆禁烧烟火识别系统监测到火苗时,系统会自动报警,通知监控管理中心,提示相关人员及时处理。与此同时,将警报截屏和视频保存到数据表中,自动汇总。秸秆…

Javaweb-DQL-聚合函数

select count(*) from stu;-- 1 select max(math) from stu;-- 2 select min(math) from stu;-- 3 select sum(math) from stu;-- 4 select avg(math) from stu;-- 5 select min(english) from stu;-- 6

厨师帽识别系统 明厨亮灶

厨师帽识别系统即时检测餐饮厨房地区,当监控人员不戴厨师帽时,马上警报,与此同时储存警报截屏视频到数据库系统产生汇报,推荐给有关管理者,也可以依据报警记录和警报截屏、视频查看播放,进一步提高监控区域的操纵高效率,产生高效的监管功效,提升食品类安全管理。厨师帽…

河道水面结冰识别监测报警 河道冰水情冰凌图像识别

河道水面结冰识别监测系统它能够即时、智能化地监测和识别江河里的水面是否结冰,河道冰水情冰凌图像识别反复进行算法自我学习最新数据的升级。通过加工处理和分析后,马上传送给相关人员,有利于实时监控系统和破冰以便船舶通航,降低人力资源耗费,提高效率。智能化专注于人…

河道水面漂浮物识别检测

河道水面漂浮物识别检测根据监控摄像头搜集江河或湖水的短视频,截取图片中带有海上漂浮物的照片,河道水面漂浮物识别检测训练所需照片,形成数据实体模型,随后即时检测真正情景里的监控视频或照片。因而,完成检测的第一步是收集数据。河道水面漂浮物识别检测根据监控摄像头…

个人主页,简洁又好看,每个人都可以轻松搭建

今日周末不用上班,照例醒的很早,老婆孩子都还在睡觉,不便打扰,于是来到阁楼书房打开电脑,准备刷刷视频享受下愉快的周末休闲时光,启动浏览器,发现浏览器主页无法打开,主页指向的是我个人搭建的咖啡吧导航,一个囊括了我的常用网站及实用工具的导航站,配置的我的个人主…