$ 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. 《Linux内核设计与实现》Chapter 1 读书笔记

    <Linux内核设计与实现>Chapter 1 读书笔记 一.Unix的特点 Unix从Multics中产生,是一个强大.健壮和稳定的操作系统. 特点 1.很简洁 2.在Unix系统中,所 ...

  2. 读书笔记(chapter1-2)

    一.linux内核简介 1.1unix的历史 1.unix强大的根本原因:1.unix很简洁,仅仅提供几百个系统调用并且有一个非常明确的设计目的:2.在unix中,所有的东西都被当作文件对待:3.un ...

  3. 【Leetcode】378. Kth Smallest Element in a Sorted Matrix

    Question: Given a n x n matrix where each of the rows and columns are sorted in ascending order, fin ...

  4. 深入理解学习Git工作流(git-workflow-tutorial)

    转载:https://segmentfault.com/a/1190000002918123#articleHeader11 人在学习git工作流的过程中,从原有的 SVN 模式很难完全理解git的协 ...

  5. Delphi 关于DBGrid多选删除(shitf多选,ctrl多选)

    ////删除多选记录 procedure THistoryForm.DeleteButtonClick(Sender: TObject);var  tempBookMark:TbookMark;  i ...

  6. 如何取消mysql的密码?

    有两种方法: 1.mysql命令 SET PASSWORD FOR root@localhost=PASSWORD(''); 2.运行  mysqladmin 命令 mysqladmin -u roo ...

  7. Python【知识点】傻傻的函数内变量

    问题的由来 有个学生问我一个问题关于函数内部变量的我们来一起看下代码: Code1 x = 50 def func(): print(x) global x print("x修改前的值:&q ...

  8. Make Palindrome CodeForces - 600C(思维)

    A string is called palindrome if it reads the same from left to right and from right to left. For ex ...

  9. nginx mp3

    location /mp3 { alias "d:/mp3"; default_type audio/mpeg; autoindex on; }

  10. javaee, javaweb和javase的区别以及各自的知识体系

    javaee, javaweb和javase的区别以及各自的知识体系 来源 https://blog.csdn.net/weixin_39297312/article/details/79454642 ...