2022春每日一题:Day 34

题目:lowbit求和 (没有找到哪个公开题库有这个题)
题意:求数组中任意一对数的异或和的lowbit的总和。
对于异或,二进制位中两个数相等则为0,反之为1,而且此题是要求lowbit,那我们利用这个,对于一个数字,他第i位二进制位k,则显然跟这个数字二进制前缀相同的数与这个数异或起来都是0,但是第i位二进制位为k^1,则这一定是其中的一个贡献,抓住这一点,就可以以二进制位建trie树,然后解决这个问题。
注意,不开longlong见祖宗,开了longlong还是见祖宗,所以部分开
代码:
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
const int N=1e5+5;
const long long pp=199907210507;
using namespace std;
int n,tot;
long long ret,a[N];
namespace trietree
{
struct trie
{
int son[2];
long long tag[2];
}e[N*61];
void insert(long long x)
{
int p=0;
for(int i=0;i<=60;i++)
{
int k=x>>i&1;
e[p].tag[k]++;
if(!e[p].son[k])
e[p].son[k]=++tot;
p=e[p].son[k];
}
}
int query(long long x)
{
int p=0;
long long ans=0;
for(int i=0;i<=60;i++)
{
int k=x>>i&1;
ans=(ans+(1LL<<i)%pp*e[p].tag[k^1]%pp)%pp;
p=e[p].son[k];
}
return ans;
}
}
using namespace trietree;
signed main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%lld",&a[i]),insert(a[i]);
for(int i=1;i<=n;i++)
ret=(query(a[i])+ret)%pp;
printf("%lld\n",ret);
return 0;
}
2022春每日一题:Day 34的更多相关文章
- 老男孩IT教育-每日一题汇总
老男孩IT教育-每日一题汇总 第几天 第几周 日期 快速访问链接 第123天 第二十五周 2017年8月25日 出现Swap file….already exists以下错误如何解决? 第122天 2 ...
- 【python】Leetcode每日一题-最大数
[python]Leetcode每日一题-最大数 [题目描述] 给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数. 注意:输出结果可能非常大,所以你需要返回一个 ...
- 【Java每日一题】20170106
20170105问题解析请点击今日问题下方的"[Java每日一题]20170106"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...
- 【Java每日一题】20170105
20170104问题解析请点击今日问题下方的"[Java每日一题]20170105"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...
- 【Java每日一题】20170104
20170103问题解析请点击今日问题下方的"[Java每日一题]20170104"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...
- 【Java每日一题】20170103
20161230问题解析请点击今日问题下方的"[Java每日一题]20170103"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...
- 【Java每日一题】20161230
// 20161229问题解析请点击今日问题下方的"[Java每日一题]20161230"查看(问题解析在公众号首发,公众号ID:weknow619)package Dec2016 ...
- 【Java每日一题】20161229
package Dec2016; import java.util.ArrayList; import java.util.List; public class Ques1229 { public s ...
- 【Java每日一题】20161228
package Dec2016; import java.util.ArrayList; import java.util.List; public class Ques1228 { public s ...
- 【Java每日一题】20161227
package Dec2016; public class Ques1227 { public static void main(String[] args){ } { c = 1; } int c ...
随机推荐
- 报错:①Tog goal specified requires a project to execute but there is no POM in this directory......②说类HelloWorld是公共的, 应在名为 HelloWorld.java 的文件中声明 public class HelloWorld......
在运行Maven的命令时,在DOS窗口里面必须把目录切换到项目的根部,要不然命令是找不到目的地. 下图是错误示范,项目在Demo02这个目录里,就必须将目录切换到Demo02下,否则DOS窗口只有飘红 ...
- 第九十七篇:CSS的选择器及优先级
好家伙,来补一点关于CSS的基础 1.id选择器 id 选择器可以为标有特定 id 的 HTML 元素指定特定的样式 使用#号来定义样式 2.class选择器 class 选择器用于描述一组元素的样式 ...
- 手撸Router,还要啥Router框架?react-router/vue-router躺一边去
有没有发现,在大家使用React/Vue的时候,总离不开一个小尾巴,到哪都得带着他,那就是react-router/vue-router,而基于它们的第三方框架又出现很多个性化约定和扩展,比如nuxt ...
- KFS replicator安装(KES-KES)
源端 一.安装前置配置 1.创建安装用户 groupadd flysync useradd flysync -g flysync -G kingbase passwd flysync 2.上传安装文件 ...
- KFS邮件自动告警-数据比对-数据修复配置方法
一.告警机制 用户可以通过配置告警机制,在比对完成和节点报错时接收到邮件告警. 告警机制共包含3个方面: 1. 告警配置 2. 用户订阅 3. 告警历史 KFS邮箱分两个部分,一个是接收告警信息的邮箱 ...
- git revert总结
git revert git revert 是一种创建一次新的commit 来回退某次或某几次commit的一种方式 命令 // 创建一个新的commit,这个commit会删除(下面)commit- ...
- .NET 7 RC1 正式发布
从年初2 月份发布第一个预览版,经历7个预览版后,Microsoft 西雅图时间9月14日发布了 .NET 7 RC 1:https://devblogs.microsoft.com/dotnet/a ...
- JS 模块化 - 02 Common JS 模块化规范
1 Common JS 介绍 Common JS 是模块化规范之一.每个文件都是一个作用域,文件里面定义的变量/函数都是私有的,对其他模块不可见.Common JS 规范在 Node 端和浏览器端有不 ...
- redis cluster 6.2集群
redis最新版本:redis-6.2.1.tar.gz 安装的版本是redis-6.0.3 采用的主机: djz-server-001 192.168.2.163 7001,7002,Admin@1 ...
- STM32F10x SPL V3.6.2 集成 FreeRTOS v202112
STM32F10x SPL 集成 FreeRTOS 在整理 GCC Arm 工具链的Bluepill代码示例, 常用外设都差不多了, 接下来是 FreeRTOS, 网上查到的基本上都是基于旧版本的集成 ...