100047. 【NOIP2017提高A组模拟7.14】基因变异
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】基因变异相关推荐
- JZOJ 100047. 【NOIP2017提高A组模拟7.14】基因变异
Description 21 世纪是生物学的世纪,以遗传与进化为代表的现代生物理论越来越多的 进入了我们的视野. 如同大家所熟知的,基因是遗传因子,它记录了生命的基本构造和性能. 因此生物进化与基因的 ...
- JZOJ 100046. 【NOIP2017提高A组模拟7.14】收集卡片
Description Star 计划订购一本将要发行的周刊杂志,但他可不是为了读书,而是-- 集卡. 已知杂志将要发行 N 周(也就是 N 期),每期都会附赠一张卡片.Star 通 过种种途径,了解 ...
- JZOJ 5372. 【NOIP2017提高A组模拟9.17】猫
Description 信息组最近猫成灾了!隔壁物理组也拿猫没办法.信息组组长只好去请神刀手来帮他们消灭猫.信息组现在共有n 只猫(n 为正整数),编号为1 到n,站成了一个环,第i 只猫的左边是第i ...
- 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 ...
- JZOJ 5371. 【NOIP2017提高A组模拟9.17】组合数问题
Description 定义"组合数"S(n,m)代表将n 个不同的元素拆分成m 个非空集合的方案数.举个例子,将{1,2,3}拆分成2 个集合有({1},{2,3}),({2},{1,3}),({3 ...
- 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 ...
- JZOJ 100030. 【NOIP2017提高A组模拟7.8】为了爱情
Description Input 输入文件第一行包含一个正整数 k.之后是 k 组测试用例. 每组测试用例的第一行为一个整数 n.接下来 n 行,每行 n 个以空格隔开的数,用来 描述棋盘的初始状态 ...
- JZOJ 100026. 【NOIP2017提高A组模拟7.7】图
Description 有一个n个点n条边的有向图,每条边为< i,f(i),w(i)>,意思是i指向f(i)的边权为w(i)的边,现在小A想知道,对于每个点的si和mi. si:由i出发 ...
- 【NOIP2017提高A组模拟9.5】 NYG的背包
题目描述 N Y G NYG NYG有一个神奇的背包,每放进去一个物品,背包的体积就会变大. 也就是说,每放进一个物品,背包会被占用一定的体积,但是紧接着背包的总体积又会增大一定的值(注意是在放入物品 ...
- JZOJ_100029. 【NOIP2017提高A组模拟7.8】陪审团 (Standard IO)
Description 陪审团制度历来是司法研究中的一个热议话题,由于陪审团的成员组成会对案件最终的结果产生巨大的影响,诉讼双方往往围绕陪审团由哪些人组成这一议题激烈争夺. 小 W 提出了一个甲乙双方 ...
最新文章
- 亲戚再也看不见我一个人食吉野家了
- libuv / 编译 libuv 1.30 过程说明(静态库)
- 存储过程语法 - 变量
- 自己动手写ORM框架(六):实现查询功能FindById方法
- c# msi中加入驱动_MongoDB的C#驱动基本使用
- censtos6.5安装java 8_Centos6.5 安装JDK
- Android设计模式(1)----单例模式
- android3d画廊自动切换,Android viewpager 3D画廊的实现方法
- CORE | AAAI2020:分子自动优化模型
- Ts的infer类型推导
- 伴随着三维全息投影技术的升级,物理屏幕将彻底消失
- 深度学习图像处理(一)
- 一个适合初学者的Ant教程
- 亚马逊如何开多个店铺?
- 生日礼物(winter camp F)
- InnerClass annotations are missing corresponding EnclosingMember annotations. Such InnerClas...
- 读007 学风险管理RSK
- 是谁杀死了锤子和ofo?
- 拍卖场里捡个漏—我通过法拍买了一套房
- YOLOV5 模型和代码修改——针对小目标识别
热门文章
- Pegasus education technical support
- Win10 打开图片,提示文件系统错误(-2147219196)
- 《国史通鉴》- 宋朝
- 导出数据提示--secure-file-priv选项问题的解决方法
- win10系统怎么安装ie11
- MTK平台设备和驱动的配置及使用--pmic驱动 pinctrl驱动
- 小秘谈币|币圈永远不缺机会,就怕缺你在场内
- 怎么用计算机看亲戚关系,小米亲戚计算器怎么用?如何利用小米计算器查询亲戚关系...
- 腾讯云表格识别Python-SDK使用
- 论文-《Conversational Recommender System》