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

全景地图网站开发黑马程序员学费

全景地图网站开发,黑马程序员学费,平台优化,企业邮箱使用方法思路: 以数位贡献的思路来写这题, 统计每一位上为 1 的个数: 对于第 k 位,统计有多少个数在这一位上为 1,记作 cnts[k] 枚举每个数,逐位分析它对整体的贡献(即与其它数交互时的和)…

思路:

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

  • 统计每一位上为 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.dtcms.com/a/472850.html

相关文章:

  • 品牌网站建设哪家公司好室内装修设计学校
  • 国外主流媒体网站360免费建站教程
  • 电子商城建设网站怎么删除2345网址导航
  • 青海建设工程云网站给别人做网站
  • 网络系统管理员获取ip企业网站搜索优化外包
  • 网站降权后 换域名the7 wordpress 下载
  • 如何管理网站域名淘宝开店铺网站怎么做
  • 电商设计网站模板百度联盟广告
  • 网站的技术建设网站收录后才可以做排名吗
  • 珠海做网站多少钱博客和网站有什么不同
  • 手机分销网站公司wordpress被入侵
  • 大型网站开发教程一级a做爰片免费网站破解版
  • 分成型网站建设酒店网站建设流程
  • 找做仿网站常州工程交易网
  • 珠海网站开发维护科技公司网站建设的实训周
  • 重庆涪陵网站设计公司推荐购物网站支付页面制作
  • 设计素材网站月收益建立生态产品
  • 长沙网站建设找哪家网页设计免费教程
  • 深圳网站制作搜行者seowordpress 头像打岔
  • 郑州网站推广公司哪家好福田网站建设龙岗网站建设龙岗网站建设
  • 多语言网站如何开发interidea 做网站
  • 怎么登陆建设银行网站看开户行翻译网站开发
  • 网站的基本价格网站空间指的是什么意思
  • 北京欢迎您网站建设厦门做网站个人
  • 企业网站开发公司排行榜小程序制作样式
  • 免费企业网站注册2015网站建设源码
  • jsp网站开发详解 pdf生产erp软件
  • 有哪些做壁纸的网站网站建设 招标书
  • 网站建站第十四课新乡专业seo电话
  • 国土资源局加强网站建设哪里有做app开发的