ARC127D Sum of Min of Xor

性质分析加通用套路。

思路

首先我们把这题的 \(\min\) 给去掉,那么我们按位算贡献,可以求出和。这是这种式子的通用套路。

考虑加上 \(\min\),那么我们先按照 \((a_i,b_i)\) 的最高位分为:\((1,0)\),\((0,1)\),\((1,1)\),\((0,0)\) 四种情况。

可以发现用贡献的组如下:

  • \((0,0)\),\((0,1)\) 贡献为 \(a_i\oplus a_j\)。
  • \((0,0)\),\((1,0)\) 贡献为 \(b_i\oplus b_j\)。​
  • \((1,1)\),\((1,0)\) 贡献为 \(a_i\oplus a_j\)。
  • \((1,1)\),\((0,1)\) 贡献为 \(b_i\oplus b_j\)。​
  • \((1,1)\),\((1,1)\)​ 贡献需要向下枚举一位计算。
  • \((0,0)\),\((0,0)\) 贡献需要向下枚举一位计算。

那么已知贡献的我们可以用通用套路算,不知道的向下枚举即可。

CODE

#include<bits/stdc++.h>
using namespace std; #define ll long long
#define K 18 const int maxn=3e5+5; int n;
int a[maxn],b[maxn]; ll ans; vector<int>sd; void C(vector<int> &d1,vector<int> &d2,bool w)
{
for(int i=0;i<K;i++)
{
int c1,c2;
c1=c2=0;
for(int j:d1) c1+=(w?b[j]:a[j])>>i&1;
for(int j:d2) c2+=(w?b[j]:a[j])>>i&1;
ans+=(1ll*c1*(d2.size()-c2)+1ll*c2*(d1.size()-c1))<<i;
}
}
void S(int p,vector<int> &d)
{
if(d.empty()) return ;
if(p==-1)
{
for(int i=0;i<K;i++)
{
int c1=0;
for(int j:d)
c1+=a[j]>>i&1;
ans+=1ll*c1*(d.size()-c1)<<i;
}
return ;
}
vector<int> l[2][2];
for(int i:d) l[a[i]>>p&1][b[i]>>p&1].push_back(i);
C(l[0][0],l[0][1],0);
C(l[0][0],l[1][0],1);
C(l[1][1],l[0][1],1);
C(l[1][1],l[1][0],0);
for(int i:l[0][0]) l[1][1].push_back(i);
for(int i:l[0][1]) l[1][0].push_back(i);
S(p-1,l[1][1]),S(p-1,l[1][0]);
} int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",&a[i]),sd.push_back(i);
for(int i=1;i<=n;i++) scanf("%d",&b[i]);
S(K-1,sd);
printf("%lld",ans);
}

ARC127D Sum of Min of Xor的更多相关文章

  1. Linq查询Count、Sum、Min、Max、Average

    原文地址:Linq——Count.Sum.Min.Max.Average作者:mousekitty Linq查询之Count.Sum.Min.Max.Average using System; usi ...

  2. 6.组函数(avg(),sum(),max(),min(),count())、多行函数,分组数据(group by,求各部门的平均工资),分组过滤(having和where),sql优化

     1组函数 avg(),sum(),max(),min(),count()案例: selectavg(sal),sum(sal),max(sal),min(sal),count(sal) from ...

  3. Hive函数:SUM,AVG,MIN,MAX

    转自:http://lxw1234.com/archives/2015/04/176.htm,Hive分析窗口函数(一) SUM,AVG,MIN,MAX 之前看到大数据田地有关于max()over(p ...

  4. Hive分析窗口函数(一) SUM,AVG,MIN,MAX

    Hive分析窗口函数(一) SUM,AVG,MIN,MAX Hive分析窗口函数(一) SUM,AVG,MIN,MAX Hive中提供了越来越多的分析函数,用于完成负责的统计分析.抽时间将所有的分析窗 ...

  5. Linq——Count、Sum、Min、Max、Average

    using System; using System.Data; using System.Configuration; using System.Linq; using System.Web; us ...

  6. 线段树-sum/max/min/区间更新

    写一个板子. #include <cstdio> #include <algorithm> using namespace std; +; #define ROOT 1, 1, ...

  7. Linq to SQL -- Select、Distinct和Count、Sum、Min、Max、Avg

    Select/Distinct操作符 适用场景:o(∩_∩)o… 查询呗. 说明:和SQL命令中的select作用相似但位置不同,查询表达式中的select及所接子句是放在表达式最后并把子句中的变量也 ...

  8. Hive学习之路 (十三)Hive分析窗口函数(一) SUM,AVG,MIN,MAX

    数据准备 数据格式 cookie1,, cookie1,, cookie1,, cookie1,, cookie1,, cookie1,, cookie1,, 创建数据库及表 create datab ...

  9. C# 中奇妙的函数–6. 五个序列聚合运算(Sum, Average, Min, Max,Aggregate)

    今天,我们将着眼于五个用于序列的聚合运算.很多时候当我们在对序列进行操作时,我们想要做基于这些序列执行某种汇总然后,计算结果. Enumerable 静态类的LINQ扩展方法可以做到这一点 .就像之前 ...

  10. 三、函数 (SUM、MIN、MAX、COUNT、AVG)

    第八章 使用数据处理函数 8.1 函数 SQL支持利用函数来处理数据.函数一般是在数据上执行的,给数据的转换和处理提供了方便. 每一个DBMS都有特定的函数.只有少数几个函数被所有主要的DBMS等同的 ...

随机推荐

  1. Linux下常用组件镜像源、smaba、gcc、ssh、mysql安装

    Linux安装 博主使用的是ubuntu 16.04 apt更换镜像源 这里以更换阿里云镜像源为例. 首先去阿里云官方网站找对应版本系统的镜像源https://developer.aliyun.com ...

  2. 关于phpstudy小坑 经典数据库报错 1044

    经典数据库报错  1044   权限问题 一个很经典的问题 使用的集成环境的phpstudy ,  一直都挺好的  但是每次删除后不能创建同名的数据库   最后发现原来默认的只有一个库  在这个库下面 ...

  3. Maven 打 JAR 包

    项目和依赖分别打入独立 JAR 包 使用 Maven Jar Plugin 插件,可以将项目自身单独打成一个 JAR 包,项目依赖的 JAR 包统一放置到指定目录. 在项目的 pom.xml 中添加如 ...

  4. Ubuntu 安装 Docker Engine

    Docker Engine (也称作 Docker CE) 是 Docker 官方的社区版包,它不包含在 Ubuntu 默认的存储库中.因此,你无法直接使用 apt install docker-ce ...

  5. Xmind 8思维导图(含补丁)

    Xmind 8思维导图(含补丁) 什么是思维导图? 如何下载Xmind8 Xmind 8软件简单使用 获取Xmind 8 补丁 什么是思维导图? 数据结构.电路模拟等学习路线,老师都有叫画思维导图,那 ...

  6. [postgres]使用pgbench进行基准测试

    前言 pgbench是一种在postgres上进行基准测试的简单程序,一般安装后就会自带.pgbench可以再并发的数据库绘画中一遍遍地进行相同序列的SQL语句,并且计算平均事务率. 测试准备 既然要 ...

  7. python pyqt6 QComboBox 设定下拉框背景颜色

    设定QComboBox 的背景颜色,边框设定,以及下拉框的背景颜色以及边框设定, selection-background-color 不生效可忽略 xxx_source = QComboBox(se ...

  8. RocketMQ 下载安装及消息发送

    消息队列前文目录链接参考: 消息队列初见:一起聊聊引入系统mq 之后的问题https://www.cnblogs.com/yizhiamumu/p/16573472.html 分布式事务实战方案汇总  ...

  9. 『面试题』WEB前端面试专题-Promise相关

    题目一 const promise = new Promise((resolve, reject) => { console.log(1); resolve(); console.log(2); ...

  10. webpack系列-externals配置使用(CDN方式引入JS)

    如果需要引用一个库,但是又不想让webpack打包(减少打包的时间),并且又不影响我们在程序中以CMD.AMD或者window/global全局等方式进行使用(一般都以import方式引用使用),那就 ...