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

QOJ 1086 Bank Security Unification 题解

Link

简单题吗?考虑 DP,记 \(dp(i)\) 表示前 \(i\) 个数所能选出的最大权值,强制钦定必选 \(a_i\)。暴力枚举转移复杂度是 \(O(n^2)\)

优化?如果 \(i, j\) 中存在一个 \(i \lt k \lt j\) 使得 \(a_i \And a_k\) 的最高位和 \(a_i \And a_j\) 的相同,因为 \(a_k\) 会多产生一次贡献,同时由于二进制高位贡献必定大于低位贡献之和,所以选 \(a_k\) 绝对是更优的。枚举 \(a_i \And a_j\) 的最高位,找到前面第一个该位为 \(1\) 的数进行转移同时记录。

复杂度是 \(O(n \log A)\)

#include <bits/stdc++.h>using i64 = long long;constexpr int N = 1e6 + 7;
constexpr int B = 60;int n;
i64 ans;
int lst[B];
i64 a[N], dp[N];int main() {std::ios::sync_with_stdio(false);std::cin.tie(nullptr);std::cin >> n;for (int i = 1; i <= n; i++) {std::cin >> a[i];}memset(lst, -1, sizeof(lst));for (int i = 1; i <= n; i++) {for (int b = 0; b < B; b++) {if (lst[b] != -1) {int j = lst[b];dp[i] = std::max(dp[i], dp[j] + (a[i] & a[j]));}}for (int b = 0; b < B; b++) {if (a[i] & (1ll << b))lst[b] = i;}}for (int i = 1; i <= n; i++) {ans = std::max(ans, dp[i]);}std::cout << ans << "\n";return 0;
}
http://www.jsqmd.com/news/39143/

相关文章:

  • 禅道本地环境搭建
  • 2025年比较好的会议室舞台灯光厂家最新推荐榜
  • 2025年热门的盐城短视频拍摄本地服务TOP推荐
  • 2025年知名的展厅设计施工专业设计团队实力榜
  • 2025年耐用的宠物托运精选优质榜
  • cesium加载天地图影像地图与影像注记
  • Python 列表List 简介
  • 2025年专业的营销短信平台实力供应商推荐榜
  • 2025年专业的注册公司高评价服务榜
  • 2025年诚信的知产认证知识产权贯标热门口碑排行榜
  • InfluxDB时序数据库
  • 2025年知名的短视频运营本地服务TOP推荐
  • 关于AT32部分芯片带有SPIM,如何开启外部flash和SPIM驱动的代码分享
  • 2025东莞食材配送/生鲜食材/食堂配送厂家推荐广东山农农业集团,新鲜直达服务优!
  • 2025东莞农产品配送推荐:广东山农农业集团,新鲜蔬菜生鲜食堂专供
  • 【大内容项目】基于Spark的海底捞门店绩效内容可视化分析系统\python海底捞门店运营分析与可视化环境源码
  • 2025年比较好的内衣推荐TOP品牌厂家
  • 2025年有实力的物流热销口碑榜
  • 2025年11月20万六座SUV推荐:六座空间与智能兼得
  • 2025东莞蔬菜/生鲜/食材配送推荐,广东山农农业集团食堂专供新鲜直达
  • 2025年11月20万六座SUV推荐:限时权益与空间解析
  • 2025年别墅供暖厂家权威推荐榜单:斯密锅炉/别墅供暖方案/联排别墅供暖源头厂家精选
  • 基础查找算法(四)哈希查找
  • 2025年正规的抖音运营信赖推荐榜
  • 梯度下降的学习率与批大小
  • 2025年口碑好的谷歌优化顶尖推荐榜
  • 2025年11月工程管理软件推荐榜:全流程数字化排行解析
  • 一文讲解什么是PD快充诱骗协议芯片 及PD诱骗协议芯片的应用场景
  • nmcli常用命令
  • 2025年诚信的广西公司注册实力公司推荐