Description

21 世纪是生物学的世纪,以遗传与进化为代表的现代生物理论越来越多的 进入了我们的视野。 如同大家所熟知的,基因是遗传因子,它记录了生命的基本构造和性能。 因此生物进化与基因的变异息息相关,考察基因变异的途径对研究生物学有着 至关重要的作用。现在,让我们来看这样一个模型:
1、所有的基因都可以看作一个整数或该整数对应的二进制码;
2、在 1 单位时间内,基因 x 可能会在其某一个二进制位上发生反转;
3、在 1 单位时间内,基因 x 可能会遭到可感染基因库内任一基因 y 的影响 而突变为 x XOR y。
现在给出可感染基因库,Q 组询问,每组给出初始基因与终止基因,请你 分别计算出每种变异最少要花费多少个单位时间。

Input

第 1 行两个整数 N, Q; 第 2 行 N 个用空格隔开的整数分别表示可感染基因库内的基因; 接下来 Q 行每行两个整数 S、T,分别表示初始基因与终止基因。

Output

输出 Q 行,依次表示每组初始基因到终止基因间最少所花时间。

Sample Input

3 3
1 2 3
3 4
1 2
3 9

Sample Output

2
1
2

Data Constraint

对于 20%的数据,N = 0;
对于额外 40%的数据,1 ≤ Q ≤ 100,所有基因表示为不超过 10^4 的非负整 数;
对于 100%的数据,0 ≤ N ≤ 20,1 ≤ Q ≤ 10^5,所有基因表示为不超过 10^6 的 非负整数。

Solution

其实所有的操作都可以看成一个数异或另一个数(显然)。

那么 :  st ^ x1 ^ x2 ^ ... ^ xk = ed ,

两边同时异或stst得到

x1 ^ x2 ^ ... ^ xk = ed ^ st。

所以我们只需要求出0变成st^ed的步数就行了。

考虑到n很小,1e6也最多是220220。

所以直接bfs一遍就可以每次O(1)求出答案。

Code

#include<cstdio>
#include<cstring>
#include<algorithm>
#define N 120011
using namespace std;
int n,q,s,t,a[30],bz[N*10],d[N*100],f[N*10];
int main(){scanf("%d%d",&n,&q);for(int i=1;i<=n;i++) scanf("%d",&a[i]);for(int i=1;i<=20;i++) a[++n]=1<<(i-1);int i=0,j=1;memset(f,127,sizeof(f));f[0]=0;while(i++<j){int x=d[i];for(int l=1;l<=n;l++){x^=a[l];if(f[d[i]]+1<f[x]){f[x]=f[d[i]]+1;d[++j]=x;}x^=a[l];}}while(q--){scanf("%d%d",&s,&t);printf("%d\n",f[s^t]);}return 0;
}


作者:zsjzliziyang 
QQ:1634151125 
转载及修改请注明 
本文地址:https://blog.csdn.net/zsjzliziyang/article/details/85015497

100047. 【NOIP2017提高A组模拟7.14】基因变异相关推荐

  1. JZOJ 100047. 【NOIP2017提高A组模拟7.14】基因变异

    Description 21 世纪是生物学的世纪,以遗传与进化为代表的现代生物理论越来越多的 进入了我们的视野. 如同大家所熟知的,基因是遗传因子,它记录了生命的基本构造和性能. 因此生物进化与基因的 ...

  2. JZOJ 100046. 【NOIP2017提高A组模拟7.14】收集卡片

    Description Star 计划订购一本将要发行的周刊杂志,但他可不是为了读书,而是-- 集卡. 已知杂志将要发行 N 周(也就是 N 期),每期都会附赠一张卡片.Star 通 过种种途径,了解 ...

  3. JZOJ 5372. 【NOIP2017提高A组模拟9.17】猫

    Description 信息组最近猫成灾了!隔壁物理组也拿猫没办法.信息组组长只好去请神刀手来帮他们消灭猫.信息组现在共有n 只猫(n 为正整数),编号为1 到n,站成了一个环,第i 只猫的左边是第i ...

  4. JZOJ 5392. 【NOIP2017提高A组模拟10.5】Lucky Transformation

    Description Input Output Sample Input 7 2 2343223 4 1 2234 Sample Output 2243233 2334 Data Constrain ...

  5. JZOJ 5371. 【NOIP2017提高A组模拟9.17】组合数问题

    Description 定义"组合数"S(n,m)代表将n 个不同的元素拆分成m 个非空集合的方案数.举个例子,将{1,2,3}拆分成2 个集合有({1},{2,3}),({2},{1,3}),({3 ...

  6. JZOJ 100041. 【NOIP2017提高A组模拟7.12】列车调度

    Description Input Output Sample Input Sample1: 3 1 2 3 Sample2: 9 1 3 2 4 8 6 9 5 7 Sample Output Sa ...

  7. JZOJ 100030. 【NOIP2017提高A组模拟7.8】为了爱情

    Description Input 输入文件第一行包含一个正整数 k.之后是 k 组测试用例. 每组测试用例的第一行为一个整数 n.接下来 n 行,每行 n 个以空格隔开的数,用来 描述棋盘的初始状态 ...

  8. JZOJ 100026. 【NOIP2017提高A组模拟7.7】图

    Description 有一个n个点n条边的有向图,每条边为< i,f(i),w(i)>,意思是i指向f(i)的边权为w(i)的边,现在小A想知道,对于每个点的si和mi. si:由i出发 ...

  9. 【NOIP2017提高A组模拟9.5】 NYG的背包

    题目描述 N Y G NYG NYG有一个神奇的背包,每放进去一个物品,背包的体积就会变大. 也就是说,每放进一个物品,背包会被占用一定的体积,但是紧接着背包的总体积又会增大一定的值(注意是在放入物品 ...

  10. JZOJ_100029. 【NOIP2017提高A组模拟7.8】陪审团 (Standard IO)

    Description 陪审团制度历来是司法研究中的一个热议话题,由于陪审团的成员组成会对案件最终的结果产生巨大的影响,诉讼双方往往围绕陪审团由哪些人组成这一议题激烈争夺. 小 W 提出了一个甲乙双方 ...

最新文章

  1. 亲戚再也看不见我一个人食吉野家了
  2. libuv / 编译 libuv 1.30 过程说明(静态库)
  3. 存储过程语法 - 变量
  4. 自己动手写ORM框架(六):实现查询功能FindById方法
  5. c# msi中加入驱动_MongoDB的C#驱动基本使用
  6. censtos6.5安装java 8_Centos6.5 安装JDK
  7. Android设计模式(1)----单例模式
  8. android3d画廊自动切换,Android viewpager 3D画廊的实现方法
  9. CORE | AAAI2020:分子自动优化模型
  10. Ts的infer类型推导
  11. 伴随着三维全息投影技术的升级,物理屏幕将彻底消失
  12. 深度学习图像处理(一)
  13. 一个适合初学者的Ant教程
  14. 亚马逊如何开多个店铺?
  15. 生日礼物(winter camp F)
  16. InnerClass annotations are missing corresponding EnclosingMember annotations. Such InnerClas...
  17. 读007 学风险管理RSK
  18. 是谁杀死了锤子和ofo?
  19. 拍卖场里捡个漏—我通过法拍买了一套房
  20. YOLOV5 模型和代码修改——针对小目标识别

热门文章

  1. Pegasus education technical support
  2. Win10 打开图片,提示文件系统错误(-2147219196)
  3. 《国史通鉴》- 宋朝
  4. 导出数据提示--secure-file-priv选项问题的解决方法
  5. win10系统怎么安装ie11
  6. MTK平台设备和驱动的配置及使用--pmic驱动 pinctrl驱动
  7. 小秘谈币|币圈永远不缺机会,就怕缺你在场内
  8. 怎么用计算机看亲戚关系,小米亲戚计算器怎么用?如何利用小米计算器查询亲戚关系...
  9. 腾讯云表格识别Python-SDK使用
  10. 论文-《Conversational Recommender System》