$ solution $ :

这道题做法很巧妙,需要对位运算有足够了解:

  1. $ ( a $ & $ b ) $ $ + $ $ ( a $ | $ b ) $ $ = $ $ a+b $ ,所以有 $ Σb+Σc=2nΣa $

  2. 看下面代码里的数位优化,可以将复杂度由 $ O(n^2) $ 降为 $ O(n) $

知道了这两点就可以开始构造了!

首先我们根据性质1,求出每个 $ a_i $ 的值,然后检验此时的a数组是否满足题目所给的等式(要用性质2降复杂度),然后输出即可!

$ code: $

#include<iostream>
#include<cstdio>
#include<iomanip>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<ctime>
#include<cmath>
#include<vector>
#include<queue>
#include<map>
#include<set> #define ll long long
#define db double
#define inf 0x7fffffff
#define rg register int
#define end {puts("-1");exit(0);}//这个要看一眼 using namespace std; ll tot;
int n,s[33];
int a[200001];
int b[200001];
int c[200001];//如题 inline int qr(){ char ch; //(加速)
while((ch=getchar())<'0'||ch>'9');
int res=ch^48;
while((ch=getchar())>='0'&&ch<='9')
res=res*10+(ch^48);
return res;
} int main(){ n=qr();
//freopen(".in","r",stdin);
//freopen(".out","w",stdout);
for(rg i=1;i<=n;++i)
tot+=(b[i]=qr());
for(rg i=1;i<=n;++i){
tot+=(c[i]=qr());
if(c[i]<b[i])end //剪枝(加速)
}
if(tot%(n<<1))end //剪枝(必须有!)
else tot/=n<<1;
for(rg i=1;i<=n;++i){
a[i]=b[i]+c[i]-tot;
if(a[i]%n)end //剪枝(必须有!)
else a[i]/=n;
} rg m,j,x,y; //至少洛谷数据不会爆 long long
for(rg i=1;i<=n;++i)
for(m=a[i],j=1;m;m>>=1,++j)
if(m&1)++s[j]; //数位优化
for(rg i=1;i<=n;++i){ x=y=0;
for(m=a[i],j=1;j<=30;m>>=1,++j)
if(m&1)x+=s[j]<<j-1,y+=n<<j-1;//这个if看仔细了
else y+=s[j]<<j-1;
if(x!=b[i]||y!=c[i])end //最有效的剪枝!(不得不有!)
}
for(rg i=1;i<=n;++i)
printf("%d ",a[i]);
return 0;
}

CF734F Anton and School (构造)的更多相关文章

  1. CF734F Anton and School 构造+数论

    正解:构造 解题报告: 先放下传送门QwQ 这题首先要知道一个结论:(x&y)+(x|y)=x+y 还是能理解的趴? 所以我们把bi+ci就能得到∑a+n*a[i] 然后我们就能成功求出∑a ...

  2. 【CF734F】Anton and School(构造)

    [CF734F]Anton and School(构造) 题面 Codeforces 洛谷 题解 算是一道\(easy\)? 发现\((a\&b)+(a|b)=a+b\). 那么根据给定条件我 ...

  3. 【题解】 CF734F 【Anton and School】

    题解 CF734F [Anton and School] 传送门 这种将位运算和普通运算结合起来的题目要拆位来考虑,可以得到\(log_{2}(\)值域\()\)的算法,甚至将值域看成常数. 根据 \ ...

  4. 学习笔记:Maven构造版本号的方法解决浏览器缓存问题

    需要解决的问题 在做WEB系统开发时,为了提高性能会利用浏览器的缓存功能,其实即使不显式的申明缓存,现代的浏览器都会对静态文件(js.css.图片之类)缓存.但也正因为这个问题导致一个问题,就是资源的 ...

  5. 一步步构造自己的vue2.0+webpack环境

    前面vue2.0和webpack都已经有接触了些(vue.js入门,webpack入门之简单例子跑起来),现在开始学习如何构造自己的vue2.0+webpack环境. 1.首先新建一个目录vue-wk ...

  6. About 静态代码块,普通代码块,同步代码块,构造代码块和构造函数的纳闷

    构造函数用于给对象进行初始化,是给与之对应的对象进行初始化,它具有针对性,函数中的一种.特点:1:该函数的名称和所在类的名称相同.2:不需要定义返回值类型.3:该函数没有具体的返回值.记住:所有对象创 ...

  7. Eos开发——构造查询条件

    1.ajax 方式 var data = { orgid :orgid,year:year ,month: month,type:type,sortField:'sellEmpname' ,sortO ...

  8. 【C++】类和对象(构造与析构)

    类 类是一种抽象和封装机制,描述一组具有相同属性和行为的对象,是代码复用的基本单位. 类成员的访问权限 面向对象关键特性之一就是隐藏数据,采用机制就是设置类成员的访问控制权限.类成员有3种访问权限: ...

  9. Spring 设值注入 构造注入 p命名空间注入

    注入Bean属性---构造注入配置方案 在Spring配置文件中通过<constructor-arg>元素为构造方法传参 注意: 1.一个<constructor-arg>元素 ...

随机推荐

  1. 第十五次ScrumMeeting博客

    第十五次ScrumMeeting博客 本次会议于12月4日(一)22时整在3公寓725房间召开,持续30分钟. 与会人员:刘畅.辛德泰.张安澜.赵奕.方科栋. 1. 每个人的工作(有Issue的内容和 ...

  2. PHP学习笔记2

    PHP Switch语句 用于根据多个不同条件执行不同动作.如果不在每个条件后加break,将会输出所有结果. <?php $language="java"; switch( ...

  3. GITHUB使用及入门总结

    这是我第一次应用git,以下仅供git的初学者参考.     github是一个基于git的代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,也就是代码要公开.这对于一般人来说 ...

  4. Daily Scrum 11.1

    今天放假一天,明天又是新的一周,预计开始Alpha版本所有功能的整合和优化,争取在两天内完成各种功能的整合. Member Task on 11.1 Task on 11.2 仇栋民 放假一天 开始T ...

  5. ejabberd与XMPP

    ejabberd支持XMPP协议. worktile用ejabberd来做了实时消息推送: https://worktile.com/tech/basic/worktile-real-time-not ...

  6. Windows10 版本说明 From wiki 20190104

    Windows版本说明 文字版本的: PC版本历史[编辑] 索引:       旧版本       旧版本,受支援       最新版本       最新预览版本 Version 1507(Windo ...

  7. Win2019 preview 版本的安装过程

    1. 加入 windows insider 协议 登录自己的账号 同意 insder 协议. 然后 https://www.microsoft.com/en-us/software-download/ ...

  8. phpStudy-坑爹的数据库管理器-phpMyAdmin的默认用户名和密码

    在这里我必须承认自己的弱智,第一次使用phpMyAdmin竟然搞了10分钟才进去!!! 要使用默认的用户名和密码: 用户名:root 密码:root 尼玛!坑爹啊!不说清楚让我百度了半天!!!!

  9. 【BZOJ4500】矩阵(差分约束)

    [BZOJ4500]矩阵(差分约束) 题面 BZOJ 然而权限题 题解 显然拆分行和列.不妨设这一行/列总共加减的值是\(p\),那么每一个限制就是两个数的和为一个特定的数.这样子不好做,反正是一个二 ...

  10. ZOJ 1314 Reactor Cooling | 上下界无源汇可行流

    ZOJ 1314 Reactor Cooling | 上下界无源汇可行流 题意 有一个网络,每条边有流量的上界和下界,求一种方案,让里面的流可以循环往复地流动起来. 题解 上下界无源汇可行流的模型: ...