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

MC0309魔法项链

思路:

以数位贡献的思路来写这题,

  • 统计每一位上为 1 的个数

    • 对于第 k 位,统计有多少个数在这一位上为 1,记作 cnts[k]

  • 枚举每个数,逐位分析它对整体的贡献(即与其它数交互时的和)

    • 如果第 k 位为 1:

      • & 中只有其他第 k 位为 1 的数才会产生贡献:共 cnts[k] - 1

      • | 中其他所有 n - 1 个数都可以贡献

      • 总和为:

        (1≪k)×((n−1)+(cnts[k]−1))
    • 如果第 k 位为 0:

      • & 无贡献

      • | 仅与第 k 位为 1 的数有贡献(共 cnts[k] 个)

      • 总和为:

        (1≪k)×cnts[k]
  • 总贡献除以 2,避免重复计算每对 (i,j)

  • 最后加上所有数本身的魔力值。

(数位贡献)

时间复杂度:O(n)

代码:

#include<bits/stdc++.h>
using namespace std;
using ll = long long;int main() {int n;cin >> n;vector<ll> a(n);vector<ll> cnts(30, 0);for (int i = 0; i < n; ++i) {cin >> a[i];for (int k = 0; k < 30; ++k) {if ((a[i] >> k) & 1) cnts[k]++;}}ll ans = 0;for (int i = 0; i < n; ++i) {for (int k = 0; k < 30; ++k) {if ((a[i] >> k) & 1) {ans += (1LL << k) * ((n - 1) + (cnts[k] - 1));} else {ans += (1LL << k) * cnts[k];}}}ans /= 2;  // 每对重复计算了两次for (ll val : a) ans += val;cout << ans << endl;return 0;
}

http://www.xdnf.cn/news/9842.html

相关文章:

  • 多模型数据库(Multi-Model Database)深度解析
  • EasyFileCount(文件查重工具) v3.0.5.1 便携版
  • 有关用easyExcel批量导入excel入库慢的调优记录
  • 深入了解linux系统—— 库的制作和使用
  • 高端装备制造企业如何选择适配的项目管理系统提升项目执行效率?附选型案例
  • Java-代码段-http接口调用自身服务中的其他http接口(mock)-并建立socket连接发送和接收报文实例
  • 生益的高速PCB板材有哪些
  • (二)开启深度学习动手之旅:先筑牢预备知识根基
  • 缓存常见问题:缓存穿透、缓存雪崩以及缓存击穿
  • zynq ad7616 调试笔记
  • 从实验室到商用!铁电液晶如何改写显示技术格局?
  • python 包管理工具uv
  • 国芯思辰| 国产四通道24位生理电采集模拟前端AFE全面替换ADS1294R,心电贴性能再飞跃
  • Docker部署项目无法访问,登录超时完整排查攻略
  • 视频监控联网系统GB28181协议中校时流程详解以及校时失败常见原因
  • 在windows环境下安装Nmap并使用
  • 2025年渗透测试面试题总结-匿名[校招]安全研究员(SAST方向)(题目+回答)
  • 2025国创赛-高教主赛道·创意组评审要点整理
  • set_property LOC约束
  • Qt 无边框窗口实现拖动与窗口控制(最小化/最大化/关闭)
  • 从外卖APP到网络协议:深入解析UDP及应用层协议
  • [python] argparse怎么指定bool类型?
  • ST-GCN
  • 外地车在北京进京证用完后该如何行驶
  • Free2AI:企业智能化转型的加速器
  • 第七十篇 从餐厅后厨到电影院选座:生活场景拆解Java并发编程核心
  • Unity3D多场景管理框架设计
  • 可靠数据传输原理
  • 3.mkdir新建目录命令与touch新建文件命令
  • Executors工具类的潜在问题