博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codefoeces 734F. Anton and School 数学
阅读量:4708 次
发布时间:2019-06-10

本文共 1254 字,大约阅读时间需要 4 分钟。

题目大意:

给定两个正整数序列\(b,c\)构造一个正整数序列\(a\)使其满足

\[ \left\{ \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\)加和,得到
\[ \left\{ \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 
#include
#include
using namespace std;typedef long long ll;template
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
>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]<

转载于:https://www.cnblogs.com/Skyminer/p/6357538.html

你可能感兴趣的文章
Python 调用 Shell命令
查看>>
POJ 1159 Palindrome(最长公共子序列)
查看>>
ORM多表操作之多对多查询
查看>>
Oracle管理监控之sql developer配置与简单使用
查看>>
ubuntu下安装fcitx五笔输入法
查看>>
PAT 1001. A+B Format (20)
查看>>
Postman—测试脚本
查看>>
默认构造方法的显示呈现
查看>>
2012/11/14第一次真正加入博客园
查看>>
laravel页面间的传值
查看>>
SoapUI登录测试(2)-- 断言
查看>>
ORM是什么?
查看>>
冒泡排序---程序员必经之路
查看>>
jenkins构建执行shell 所有命令出现command not found
查看>>
Nginx的HTTPS 301重定向到另一个TLD(托管在同一服务器上)没有显示出SSL警告
查看>>
RUBY 模拟rtsp消息
查看>>
spring与axis2整合发布webservice
查看>>
A - Financial Management(1.1.1)
查看>>
先注册,再登录(简易版)
查看>>
Java多线程通讯---------wait,notify区别
查看>>