Codefoeces 734F. Anton and School 数学
题目大意:
给定两个正整数序列\(b,c\)构造一个正整数序列\(a\)使其满足
\begin{array}{}
b_i=(a_i\text{ and }a_1)+(a_i\text{ and }a_2)+...+(a_i\text{ and }a_n) \\
c_i = (a_i\text{ or }a_1)+(a_i\text{ or }a_2)+...+(a_i\text{ or }a_n)
\end{array}
\right.
\]
题解:
我们有这么一个性质\((a_i \text{ and } b_i)+(a_i\text{ or }b_i)= a+b\)
所以我们把所有的\(b_i,c_i\)加和,得到
\begin{array}{}
b_1+c_1 = na_1 + \sum{a_i} \\
b_2+c_2 = na_2 + \sum{a_i} \\
... \\\
b_n+c_n = na_n + \sum{a_i}
\end{array}
\right.
\]
然后再把所有的式子加和得到
\(\sum{a_i} = \frac{\sum{b_i} + \sum{c_i}}{2n}\)
然后我们可以利用这个解出所有的\(a_i\)
我也不知道为什么必须对每一位都特殊判定,不过不判定的话下面这组数据过不去
1
3
5
应该是不可行,但是如果不进行数位判定的话会输出4...
哪位大神可以来救救我。。。
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long ll;
template<typename T>inline void read(T &x){
x=0;char ch;bool flag = false;
while(ch=getchar(),ch<'!');if(ch == '-') ch=getchar(),flag = true;
while(x=10*x+ch-'0',ch=getchar(),ch>'!');if(flag) x=-x;
}
inline int cat_max(const int &a,const int &b){return a>b ? a:b;}
inline int cat_min(const int &a,const int &b){return a<b ? a:b;}
const int maxn = 200010;
ll b[maxn],c[maxn],a[maxn];
int cnt[32][2];
int main(){
int n;read(n);
ll sum = 0;
for(int i=1;i<=n;++i) read(b[i]),sum += b[i];
for(int i=1;i<=n;++i) read(c[i]),sum += c[i];
if(sum % (n<<1) != 0) return puts("-1");
sum /= (n<<1);
for(int i=1;i<=n;++i){
ll x = b[i] + c[i] - sum;
if(x < 0 || (x%n != 0)) return puts("-1");
a[i] = x/n;
for(int j=0;j<31;++j) ++cnt[j][(a[i]>>j)&1];
}
for(int i=1;i<=n;++i){
for(int j=0;j<31;++j) b[i] -= ((a[i]>>j)&1)*cnt[j][1]<<j;
if(b[i] != 0) return puts("-1");
}
for(int i=1;i<=n;++i){
printf("%I64d",a[i]);
if(i != n) putchar(' ');
else putchar('\n');
}
getchar();getchar();
return 0;
}
Codefoeces 734F. Anton and School 数学的更多相关文章
- Codeforces 734F Anton and School(位运算)
[题目链接] http://codeforces.com/problemset/problem/734/F [题目大意] 给出数列b和数列c,求数列a,如果不存在则输出-1 [题解] 我们发现: bi ...
- CodeForces 734F Anton and School
位运算. 两个数的和:$A+B=(AandB)+(AorB)$,那么$b[i]+c[i]=n*a[i]+suma$.可以解出一组解,然后再按位统计贡献验证一下. #pragma comment(lin ...
- Codeforces Round #404 (Div. 2) D. Anton and School - 2 数学
D. Anton and School - 2 题目连接: http://codeforces.com/contest/785/problem/D Description As you probabl ...
- CodeFoeces 1215 D Ticket Game(数学,思维)
CodeFoeces 1215 D Ticket Game 题目大意 M和B轮流玩游戏(每一轮M先手 现在给出一个长度为偶数的串,包含字符'?'和数字 现在两人依次在'?'上填数字\(0\)~\(9\ ...
- 【codeforces 734F】Anton and School
[题目链接]:http://codeforces.com/problemset/problem/734/F [题意] 给你两个数组b和c; 然后让你找出一个非负数组a满足题中所给关系; [题解] 有个 ...
- C. Anton and Fairy Tale(数学推式子)
\(数学题,式子并不难推,但边界是真的烦\) \(\color{Red}{Ⅰ.其实可以发现,当m>=n时,每次都可以粮食补到n,所以一定是在第n天消耗完毕}\) \(\color{Purple} ...
- PDF分享:国外优秀数学教材选评
<国外优秀数学教材选评>推荐书目下载 具体内容请查看原内容: http://www.library.fudan.edu.cn/wjzx/list/373-1-20.htm 或者http:/ ...
- 数学思想:为何我们把 x²读作x平方
要弄清楚这个问题,我们得先认识一个人.古希腊大数学家 欧多克索斯,其在整个古代仅次于阿基米德,是一位天文学家.医生.几何学家.立法家和地理学家. 为何我们把 x²读作x平方呢? 古希腊时代,越来越多的 ...
- 速算1/Sqrt(x)背后的数学原理
概述 平方根倒数速算法,是用于快速计算1/Sqrt(x)的值的一种算法,在这里x需取符合IEEE 754标准格式的32位正浮点数.让我们先来看这段代码: float Q_rsqrt( float nu ...
随机推荐
- nginx for windows 配置多域名反向代理
调试了很久...哦耶 共享出来吧 其实 nginx反向代理同一ip多个域名,给header加上host就可以了 upstream test.test.cn { server 119. ...
- HTML5 2D平台游戏开发#1
在Web领域通常会用到一组sprite来展示动画,这类动画从开始到结束往往不会有用户参与,即用户很少会用控制器(例如鼠标.键盘.手柄.操作杆等输入设备)进行操作.但在游戏领域,sprite动画与控制器 ...
- eclipse不能添加tomcat
有时候原来能新建server,删掉后就不能新建了 1.退出eclipse 2.到[工程目录下 workspace ]/.metadata/.plugins/org.eclipse.core.runti ...
- 让uboot的tftp支持上传功能
转载:http://blog.chinaunix.net/uid-20737871-id-2124122.html uboot下的tftp下载功能是非常重要和常见的功能.但是偶尔有些特殊需求的人需要使 ...
- Inno Setup 使用笔记
使 用 笔 记https://blog.csdn.net/dongshibo12/article/details/79095971 1.Inno Setup 是什么?Inno Setup 是一个免费的 ...
- Net中的代码规范工具及使用
Net中的代码规范工具及使用 https://www.cnblogs.com/selimsong/p/9209254.html 上一篇文章介绍了编码标准中一些常用的工具,本篇就具体来介绍如何使用它们来 ...
- VS2017快捷键
1.回到上一个光标位置/前进到下一个光标位置 (1)回到上一个光标位置:使用组合键“Ctrl + -”; (2)前进到下一个光标位置:“Ctrl + Shift + - ”. 2.复制/剪切/删除整行 ...
- 提高Interface Builder高效工作的8个技巧
本文转载至 http://www.cocoachina.com/ios/20141106/10151.html iOS开发Interface Builder 本文译自:8 Tips for worki ...
- 【BZOJ4264】小C找朋友 随机化
[BZOJ4264]小C找朋友 Description 幼儿园里有N个小C,两个小C之间可能是朋友也可能不是.所有小C之间的朋友关系构成了一个无向图,这个无向图中有M条边. 园长ATM发现对于两个(不 ...
- 九度OJ 1146:Flipping Pancake(翻饼子) (递归、游戏)
时间限制:1 秒 内存限制:32 兆 特殊判题:是 提交:265 解决:116 题目描述: We start with a stack n of pancakes of distinct sizes. ...