【题解】与查询 [51nod1406]
【题解】与查询 [51nod1406]
【题目描述】
给出 \(n\) 个整数,对于 \(x \in [0,1000000]\),分别求出在这 \(n\) 个整数当中同 \(x\) 求与之后结果为 \(x\) 的有多少个。
【样例】
样例输入:
3
2 3 3
样例输出:
3
2
3
2
0
0
...
...
...
0
(一共1000001个数,后面一共999997个0)
【数据范围】
\(100\%\) \(1 \leqslant N \leqslant 10^6,\) \(1 \leqslant a[i] \leqslant 10^6\)
【分析】
用 \(dp[i]\) 表示与 \(i\) 求与等于 \(i\) 的数的个数。
首先,一个数同它自己求与还是等于它自己,所以对于,\(dp[i]\) 的初始值就是给出的序列中 \(i\) 出现的次数。
对于某一个二进制数 \(a\),将其任意一个为 \(0\) 的位变为 \(1\) ,得到二进制数 \(b\)。
可知:
同 \(a\) 求与等于 \(a\) 的数同 \(b\) 求与不一定等于 \(b\),
同 \(b\) 求与等于 \(b\) 的数同 \(a\) 求与一定等于 \(a\)。
即 \(b\) 的方案一定可以满足 \(a\) 的需求。
所以 \(dp\) 方程为:\(dp[j]+=dp[j \oplus (1<<i)]\),其中 \(j \in [0,10^6],\) \(j\) \(\And (1<<i)==0\) 且 \(j \oplus (1<<i) \leqslant 10^6\)
由于数据输出过多,需要自己写快输,否则会全 \(TLE\) 。
时间复杂度为 \(O(MlogM)\),其中 \(M=10^6\) 。
【Code】
#include<algorithm>
#include<cstdio>
#define Re register int
const int N=1e6;
int n,a,dp[N+3];
inline void in(Re &x){
int f=0;x=0;char c=getchar();
while(c<'0'||c>'9')f|=c=='-',c=getchar();
while(c>='0'&&c<='9')x=(x<<1)+(x<<3)+(c^48),c=getchar();
x=f?-x:x;
}
inline void out(int x){
if(x>9)out(x/10);
putchar(x%10+'0');
}
int main(){
in(n);
for(Re i=1;i<=n;i++)in(a),++dp[a];
for(Re i=0;i<20;i++)
for(Re j=0;j<=N;++j)
if(!(j&(1<<i))&&(j^(1<<i))<=N)dp[j]+=dp[j^(1<<i)];
for(Re j=0;j<=N;++j)out(dp[j]),puts("");
}
【题解】与查询 [51nod1406]的更多相关文章
- MySQL之单表查询练习
一.emp表 二.练习 1. 查询出部门编号为30的所有员工2. 所有销售员的姓名.编号和部门编号.3. 找出奖金高于工资的员工.4. 找出奖金高于工资60%的员工.5. 找出部门编号为10中所有经理 ...
- 【BZOJ】3309: DZY Loves Math
题意 \(T(T \le 10000)\)次询问,每次给出\(a, b(1 \le a, b \le 10^7)\),求 \[\sum_{i=1}^{a} \sum_{j=1}^{b} f((i, j ...
- 【洛谷P3792】由乃与大母神原型和偶像崇拜
题目大意:维护一个序列,支持单点修改和查询一段区间能不能组成连续的一段数. 题解:查询区间能不能组成一段连续的数这个操作较为复杂,很难在较小时间复杂度内直接维护.这里采用线段树维护区间哈希的策略,即: ...
- codeforces 1000F One Occurrence(线段树、想法)
codeforces 1000F One Occurrence 题意 多次询问lr之间只出现过一次的数是多少. 题解 将查询按照左端点排序,对于所有值维护它在当前位置后面第二次出现是什么时候,那么查询 ...
- Croc Champ 2013 - Round 1 E. Copying Data 线段树
题目链接: http://codeforces.com/problemset/problem/292/E E. Copying Data time limit per test2 secondsmem ...
- POJ2104 K-th Number —— 区间第k小 整体二分
题目链接:https://vjudge.net/problem/POJ-2104 K-th Number Time Limit: 20000MS Memory Limit: 65536K Tota ...
- [Leetcode]Sql系列3
题目1 产品数据表: Products +---------------+---------+ | Column Name | Type | +---------------+---------+ | ...
- 51nod1406 与查询
这题卡I/O...dp一下... #include<cstdio> #include<cstring> #include<cctype> #include<a ...
- 树套树专题——bzoj 3110: [Zjoi2013] K大数查询 & 3236 [Ahoi2013] 作业 题解
[原题1] 3110: [Zjoi2013]K大数查询 Time Limit: 20 Sec Memory Limit: 512 MB Submit: 978 Solved: 476 Descri ...
随机推荐
- java 使用网建SMS发送短信验证码
首先, 注册并登录网建用户, 新注册用户将获得5条的测试短信 网建短信通地址: http://sms.webchinese.cn/default.shtml 注册账号在此就不多做赘述了, 直接上代码 ...
- IIS下配置Php+Mysql+zend的图文教程(完整版)
网上有很多关于PHP在IIS下配置的教程,但都是一些很理性化的东西,我从里面整理出来这个教程 发出来为了方便参考,,有什么问题也可以大家一起交流,,如果有什么不对的地方,请指正.. 下面的教程都是在w ...
- matplotlib 自带的几种美化样式
1.用 matplotlib.pyplot.style.avaliable 可查看 matplotlib 自带的美化样式如下: ['bmh', 'classic', 'dark_background' ...
- python 和 R 中的整数序列
python 中的 range() 函数是很常用的,R 中相应的函数是 seq(), 其实,R 中的“ :”也能代替 python 中的 range() 函数. 1.生成升序整数序列 python: ...
- NLP学习(5)----attention/ self-attention/ seq2seq/ transformer
目录: 1. 前提 2. attention (1)为什么使用attention (2)attention的定义以及四种相似度计算方式 (3)attention类型(scaled dot-produc ...
- vue-router模式history与hash
[重点] history与hash路由的区别 hash前端路由,无刷新 history 会去请求接口 vue-router 默认 hash 模式 —— 使用 URL 的 hash 来模拟一个完整的 U ...
- CSS实现常用组件特效(不依赖JS)
我们已经习惯用 JavaScript 实现常见的 UI 功能组件,如手风琴.工具提示.文本截断等.但是随着 HTML 和 CSS 新特性的推出,不用再支持旧浏览器,我们可以越来越少用 JavaScri ...
- Eslint 允许使用双等号
资料 网址 ESlint: Expected !== and instead saw != https://stackoverflow.com/questions/48375316/eslint-ex ...
- nginx 常用的中间件
1.--with-http_stub_status_module nginx客户端状态 # 打开default.conf文件 vim /etc/nginx/conf.d/default.conf # ...
- react使用ant design pro时的滑动图片组件
react的滑动图片验证,是基于https://segmentfault.com/a/1190000018309458?utm_source=tag-newest做的修改,改动的主要有以下几点: 1. ...