ARC127D Sum of Min of Xor
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的更多相关文章
- Linq查询Count、Sum、Min、Max、Average
原文地址:Linq——Count.Sum.Min.Max.Average作者:mousekitty Linq查询之Count.Sum.Min.Max.Average using System; usi ...
- 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 ...
- Hive函数:SUM,AVG,MIN,MAX
转自:http://lxw1234.com/archives/2015/04/176.htm,Hive分析窗口函数(一) SUM,AVG,MIN,MAX 之前看到大数据田地有关于max()over(p ...
- Hive分析窗口函数(一) SUM,AVG,MIN,MAX
Hive分析窗口函数(一) SUM,AVG,MIN,MAX Hive分析窗口函数(一) SUM,AVG,MIN,MAX Hive中提供了越来越多的分析函数,用于完成负责的统计分析.抽时间将所有的分析窗 ...
- Linq——Count、Sum、Min、Max、Average
using System; using System.Data; using System.Configuration; using System.Linq; using System.Web; us ...
- 线段树-sum/max/min/区间更新
写一个板子. #include <cstdio> #include <algorithm> using namespace std; +; #define ROOT 1, 1, ...
- Linq to SQL -- Select、Distinct和Count、Sum、Min、Max、Avg
Select/Distinct操作符 适用场景:o(∩_∩)o… 查询呗. 说明:和SQL命令中的select作用相似但位置不同,查询表达式中的select及所接子句是放在表达式最后并把子句中的变量也 ...
- Hive学习之路 (十三)Hive分析窗口函数(一) SUM,AVG,MIN,MAX
数据准备 数据格式 cookie1,, cookie1,, cookie1,, cookie1,, cookie1,, cookie1,, cookie1,, 创建数据库及表 create datab ...
- C# 中奇妙的函数–6. 五个序列聚合运算(Sum, Average, Min, Max,Aggregate)
今天,我们将着眼于五个用于序列的聚合运算.很多时候当我们在对序列进行操作时,我们想要做基于这些序列执行某种汇总然后,计算结果. Enumerable 静态类的LINQ扩展方法可以做到这一点 .就像之前 ...
- 三、函数 (SUM、MIN、MAX、COUNT、AVG)
第八章 使用数据处理函数 8.1 函数 SQL支持利用函数来处理数据.函数一般是在数据上执行的,给数据的转换和处理提供了方便. 每一个DBMS都有特定的函数.只有少数几个函数被所有主要的DBMS等同的 ...
随机推荐
- 我的 mac 生产力工具
应用名称 说明 安装命令 Homebrew mac 上的强大包管理器 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com ...
- Java Web专题攻关
servlet概念 servlet其实就是运行在服务器的一个小程序 如何去理解呢?我们访问服务器的资源包括静态资源和动态资源,其中静态资源是我们放置的模板,CSS.JS等文件,是不变的.而我们访问的动 ...
- 【Python】之pip安装报错问题:WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None))
我想安装python第三方库,但是始终报安装失败 经查询得知,需要国内源,有如下地址: 阿里云 http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https: ...
- 【YashanDB知识库】update/delete未选中行时,v$transaction视图没有事务,alter超时问题
问题现象 1.alter table修改表字段名,卡住,超时. 2.查看v$transaction事务视图,没有看到事务记录. 3.问题单:调整表结构时超时 问题风险及影响 无风险 问题影响版本 客户 ...
- Java!!冲
开始学习Java!!!
- SpringBoot——基础配置
基础配置 配置格式 SpringBoot提供了多种属性配置方法 application.properties server.port=80 application.yml server: port: ...
- [TK] CF1526B I Hate 1111
给定一个数,将它表示成若干个形如 \(11,111,1111\cdots\) 之类的数之和,判断有没有可行解 考虑到一种贪心,即从高位开始依次向下减去每位数字,判断还能不能减动,减不动或者没减完就报告 ...
- LeetCode 332. Reconstruct Itinerary 最小欧拉路径
题意 给N个单词表示N个点,和N-1个单词对,表示可以走的路径,求字典序最小的总路径. 首先说下这么暴力DFS能过.暴力的我都不敢写= = class Solution { public: vecto ...
- C++中的类型推断机制
1. decltype 的作用 decltype 是C++11引入的一个关键字,用来推断表达式的类型.它返回的是表达式的精确类型,包括引用和const限定符等. 例子: int x = 5; decl ...
- 使用nnUNet跑BraTS脑肿瘤分割预测TC和ET非常低的原因。
使用nnUNet跑BraTS脑肿瘤分割预测TC和ET非常低,原来是预测的时候,使用了预处理后的标签.原本标签是:2:WT, 1:TC, 4:ET.但是预处理之后变为:1:WT, 2:TC, 3:ET. ...