首页 > 其他分享 >第 9 场 小白入门赛 字典树考试

第 9 场 小白入门赛 字典树考试

时间:2024-04-09 20:29:33浏览次数:24  
标签:题目 入门 int ll 贡献 小白 答案 位为 字典

题目:

4.字典树考试【算法赛】 - 蓝桥云课 (lanqiao.cn)

思路:

我们可以先抛开题目,想一下一个二进制数是 1 1 1 1 1 1 1 1 1  ---> 9个1,题目说(Ai & Aj)所以两个1一个组合, 我们用最笨的方式取枚举 -----> 是 8 + 7+ 6 + 5+ ....... + 1 是36

两两一组,想想X个1如何算呢 ?

是不是应该是 x * (x-1) / 2  

换到此题中,两个数相同的数位是1才能为答案做1个贡献,所以我们计算每个数位上1的总数,然后求出结果

我们按位来考虑问题,考虑每个“位”对答案的贡献考虑这个数组的第b位对答案的贡献,显然只有第b位为1才可能对答案有贡献。
任选两个第 b位为1的,即可产生1的贡献。假设有t个第b位为1的。故这一位的贡献为,累加每一位的贡献即可 


AC代码: 

#include <iostream>

using namespace std;

typedef long long ll;
const int N = 2e5+10;
ll arr[N];

int main()
{
  cin.tie(0)->ios::sync_with_stdio(false);
  // 请在此输入您的代码
  int n;
  cin >> n;
  for(int j=0;j<n;j++)
  {
      ll x;
      cin >> x;
      for(int i=0;i<31;i++)
      {
          //这里要注意需要&1才能把这个位单独取出来
          //这里本人忘了&1直接 >> 取 是非常不对的,因为 >> 这个是除2的意思
          int bit = x >> i & 1;
          if(bit == 1) ++arr[i];
      }
  }
  ll res = 0;
  for(int i=0;i<31;i++)
  {
      //这里是个公式推到res = x * (x-1) / 2; 
      res += arr[i] * (arr[i]-1) / 2;
  }
  cout << res;
  return 0;
}

标签:题目,入门,int,ll,贡献,小白,答案,位为,字典
From: https://blog.csdn.net/m0_67717626/article/details/137522573

相关文章

  • Qt使用Sqlite数据库-1(入门级)
    1.在Pro文件中加入sql资源QT+=coreguisql    这是第一步也是最重要的一步,没有加入sql资源。在包含数据库文件时会报错找不到该文件。2.创建链接及打开数据库//包含数据库头文件#include<QSqlDatabase>#include<QSqlError>#include<QSqlQuery>//创建链接......
  • 【牛客SQL快速入门】SQL基础(二)
    一、高级查询1.计算函数AVGAVG()为平均值函数,通过对表中行数计数并计算其列值之和,求得该列的平均值。AVG()可用来返回所有列的平均值,也可以用来返回特定列或行的平均值。Selectavg(gpa)Fromuser_profileCOUNTCOUNT()函数为计数函数,可利用COUNT() 确定表中行的数......
  • FPGA入门笔记012——嵌入式块RAM应用之ROM
    1、实验现象​ 实现一组固定的数据(三角波形表)存储在FPGA中使用IP核构建的片上ROM中,开发板上电后,系统开始从ROM中读出数据,并将数据直接通过并口输出。通过使用SignalTapII软件实时抓取并口上的数据,显示得到三角波形。然后使用Quartus软件中提供的In-SystemMemor......
  • 谷芦语(Guruica)入门
    简介谷芦语(Guruica)印度尼西亚爪哇岛的中爪哇省山区的谷芦村(guru)的语言,在主要城市梭罗(Surakarta)的东北部。相传当时第一个荷兰探险者进入谷芦村后,指着一个村民询问这是哪里。村民以为是问他是谁,就说“我吗?”(guruauru?),因此此地就被称为guru了。另一说法是村民对探险者打招呼,说......
  • Linux架构28 ansible流程控制, 条件判断(主机,是否安装,系统版本), 循环语句(安装启动
    Ansible流程控制一、playbook条件语句不管是shell还是各大变成语言中,流程控制,条件判断这些都是必不可少的,在我们使用Ansible的过程中,条件判断的使用频率极其高。例如:1.我们使用不同的系统的时候,可以通过判断系统来对软件包进行安装。2.在nfs和rsync安装过程中,客户端服务器......
  • JavaSE笔记10数组入门
    数组的入门概念数组属于引用数据类型,其父类是Object数组可以容纳多个元素。(数组是一个数据的集合)数组可以存储基本和引用数据类型数组是引用类型,所以存储再堆内存中数组不能直接存储Java对象,但是可以存储其引用(内存地址)分类一维数组二维数组多维数组二维数组本质......
  • 列表、字典推导式
    列表推导式固定语法:[表达式foriinlist/dict...判断语句][if语句foriinlist/dict...][字符串处理foriinlist/dict...]name_list=['a','b']name_new=['nb_'+iforiinname_list]print(name_new)字典推导式固定语法:[key:value......
  • vue快速入门(十四)reduce求和
    注释很详细,直接上代码新增内容非嵌套情况求和嵌套情况求和源码<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><ti......
  • vue3 快速入门系列 —— vue3 路由
    vue3快速入门系列-vue3路由在vue3基础上加入路由。vue3需要使用vue-routerV4,相对于v3,大部分的VueRouterAPI都没有变化。Tip:不了解路由的同学可以看一下笔者之前的文章:vue2路由参考:vue2路由官网、vue3路由官网vue-routerV4在VueRouterAPI从v3(Vue2)到v4......
  • 如何成为一名黑客?小白必学的12个基本步骤
    如何成为一名黑客?小白必学的12个基本步骤黑客攻防是一个极具魅力的技术领域,但成为一名黑客毫无疑问也并不容易。你必须拥有对新技术的好奇心和积极的学习态度,具备很深的计算机系统、编程语言和操作系统知识,并乐意不断地去学习和进步。如果你想成为一名优秀的黑客,下面是12......