利用VCF文件构建系统发育树

导读

本文将介绍三种使用VCF文件,构建系统发育树的方法,包括程序的安装,使用,已及系统发育树的可视化与美化。

1. VCF2Dis

VCF2Dis是一种新的简单高效的软件,用于计算基于VCF格式的距离矩阵

1.1. 安装

# 下载
wget -c https://github.com/hewm2008/VCF2Dis/archive/v1.47.tar.gz

# 解压
tar -zxvf v1.47.tar.gz

# 进入程序目录
cd VCF2Dis  

# 编译
make ; make clean   

# 测试运行
./bin/VCF2Dis

1.2. 距离矩阵

  • 利用VCF2Dis生成距离矩阵
VCF2Dis -i test.vcf -o test.mat

1.3. mat2nwk

  • 文件转换

上传距离矩阵到在线网站, FastMe2.0。上传以后,选择Data typeDistance matrix。 然后根据自己的需要进行配置,最后填入任务名称和Email来获取结果通知。

  • 结果下载

点击下载结果

结果文件是一个压缩文件,里面包含:

  1. 一个.nwk文件用于进化树可视化

  1. stats.txt
	记录了文件转换过程中,选择的参数
  1. stdout.txt
	转换过程中的日志文件,记录了程序的运行过程

1.4. iTOL美化

十分推荐利用iTOL对进化树进行美化,该程序是网页版,配置简单,结果十分漂亮。

  • 导入iTOL美化

2. Phylip

PHYLIP是用于推断系统发育的免费程序包。

2.1. 安装

  • 源码编译安装
# 下载PHYLIP 
wget -c http://evolution.gs.washington.edu/phylip/download/phylip-3.697.tar.gz

# 解包
tar zxf phylip-3.697.tar.gz 

# 进入程序文件夹
cd phylip-3.695/src/

# 复制文件
cp Makefile.unx Makefile

# 编译
make install  # 可能需要sudo 权限
  • conda安装
# 新建phylip环境,并安装phylip
conda create -n phylip -c bioconda phylip -y

2.2. 格式转换

  • 转换脚本下载
# 下载
wget -c https://github.com/edgardomortiz/vcf2phylip/archive/refs/tags/v2.8.zip

# 解压
unzip v2.8.zip
  • 转换为PHYLIP matrix
python vcf2phylip.py -i test.vcf

# PHYLIP matrix是默认格式,不同输出格式,见下参数
# -f FASTA matrix
# -n NEXUS matrix
# -b binary NEXUS matrix

注意:test.vcf中的样本名一定要少于10个字符,否则会报错

2.3. 建树

  • 构建配置文件
  1. seqboot.par
test.phy  # 本程序的输入文件
R # 选择bootstrap
100 # 设置bootstrap的值,即重复的replicate的数目,通常使用1000或者100,注意此处设定好后,后续两步的M值也为1000或者100
Y # yes确认以上设定的参数
9 # 设定随机参数,输入奇数值。
  1. dnadist.par
seqboot.out # 本程序的输入文件
T  # 选择设定Transition/transversion的比值
2.3628  # 比值大小
M   #修改M值
D  # 修改M值
100  # 设定M值大小
2  # 将软件运行情况显示出来
Y  # 确认以上设定的参数
  1. neighbor.par
dnadist.out  # 本程序的输入文件
M
100   # 设定M值大小
9  # 设定随机数,输入奇数值
Y  # 确认以上设定的参数
  1. consense.par
nei.tree  #本程序的输入文件
Y #确认以上设定的参数
  • phylip建树
# 在 phylip 文件夹下,依次运行下面的命令

# seqboot
./exe/seqboot < ./seqboot.par && mv ./outfile ./seqboot.out

# dnadist
./exe/dnadist < ./dnadist.par &&  mv ./outfile ./dnadist.out

# neighbor
./exe/neighbor < ./neighbor.par && mv  ./outfile ./nei.out && mv ./outtree ./nei.tree 

# consense
./exe/consense < ./consense.par && mv ./outfile ./cons.out && mv ./outtree ./constree 

3. IQ-tree

IQ-tree的建树方法与phylip类似,只是最后一步不一样,同样需要先转换文件格式为:phy(格式转换见2.2)。

3.1. 安装

  • 利用conda安装
# 新建iq-tree环境 并 安装iqtree
conda create -n iqtree -c bioconda iqtree -y

3.2. 建树

  • IQ-tree 建树(简单)
iqtree -s test.phy

替代模型选择与详细的分支评估,见http://www.iqtree.org/中说明

上面三种示例程序运行过程中使用的参数,需要根据自身数据进行调整。

本文转载于网络 如有侵权请联系删除

相关文章

  • MySQL按日期分组并统计截止当前时间的总数实例教程

    MySQL按日期分组并统计截止当前时间的总数建表语句SETNAMESutf8mb4; SETFOREIGN_KEY_CHECKS=0;------------------------------ --Tablestructurefort_reg ------------------------------ DROPTABLEIFEXISTS`t_reg`; CREATETABLE`t_reg` (  `ID`int(11)NOTNULLAUTO_INCREMENTCOMMENT'ID编号',  `REG_TIME`datetime(0)NULLDEFAULTNULLCOMMENT'时间',  `REG_COUNT`int(11)NULLDEFAULTNULLCOMMENT'数量',  PRIMARYKEY(`ID`)USINGBTREE )ENGINE=InnoDBAUTO_INCREMENT=8CHARACTERSET=utf8mb4COLLATE=utf8mb4_general_ciROW_FORMAT=Dynamic;-

  • SOA、SOAP、RPC、REST、DUBBO的区别与联系[通俗易懂]

    大家好,又见面了,我是你们的朋友全栈君。SOASOA(面向服务的软件架构、ServiceOrientedArchitecture),是一种软件设计模式,主要应用于不同应用组件之间通过某种协议来互操作。例如典型的通信网络协议。因此SOA是独立于任何厂商、产品、技术的。 SOA有两个层面的定义:从应用的角度定义:SOA是一种应用框架,它着眼于日常的业务应用,并将他们划分为单独的业务功能和流程,及所谓的服务。 从软件的基本原理定义:SOA是一个组件模型,它将应用程序的不同功能单元(服务)通过这些服务之间定义良好的接口和契约联系起来。复制SOA对于实现企业资源共享,打破“信息孤岛”的步骤如下:把引用和资源转换为对象; 把这些服务编程标准的服务,形成资源的共享;复制基于SOA的解决方案,SOA架构可分为五层水平:用户界面层----这些GUI的最终用户或应用程序访问的应用程序/服务接口; 业务流程层----在应用方面的业务用例服务; 服务层----服务合并在一起,提供统一的实时服务; 服务组件层----用来建造服务的组件,如功能库、技术库、技术接口等; 操作系统----这层包含数据模型,企业数据仓

  • 【图解数据结构】外行人也能看懂的哈希表

    输入一个错误的英文单词,它就会提示“拼写错误”。这个单词拼写检查功能,虽然很小但却非常实用。是如何实现的呢?1什么是散列?散列表,HashTable,用数组支持按照下标随机访问数据的特性,所以散列表其实就是数组的一种扩展,由数组演化而来。假如有89名候选人参加大选。为了方便记录投票,每个候选人胸前会贴上自己的参赛号码。这89名选手的编号依次是1到89。 通过编号快速找到对应的选手信息。你怎么做?可以把这89人的编号跟数组下标对应,查询编号x的人时,只需将下标为x的数组元素取出,时间复杂度就是O(1)。看来按编号查对应人信息,效率很高。这就是散列,编号是自然数,并且与数组的下标一一映射,所以利用数组支持根据下标随机访问时间复杂度是O(1),即可实现快速查找编号对应的人信息。假设编号不能设置这么简单,要加上州名、职位等更详细信息,所以编号规则稍微修改,用6位数字表示。比如051167,其中,前两位05表示州,中间两位11表示职位,最后两位还是原来的编号1到89。此时如何存储选手信息,才支持通过编号来快速查找人信息? 可以截取编号的后两位作为数组下标,来存取候选人信息数据。当通过编号查询人信

  • 快来,给程序员的福利!

    有这么一群人他们神秘低调面部年龄不详格子衫,加班,熬夜,键盘控是他们的标签他们最怕BUG,却又热衷于挑战BUG他们在代码的世界里只手遮天探索二进制的尽头他们就是程序员网传,程序员拥有一双无人能及的巧手单手修BUG样样在行炫技一分钟,背后十年功其实IT是个不断迭代的行业这就要求程序员具备不断学习的能力只有不断进修,勇攀学习的高峰解锁更多的技能才能一步步成为真正的大神(某网友在社交媒体上的分享)总之,程序员是这么一群可爱又值得我们点赞的uu们~1024程序员节也快到啦在这里,我们想发起一次关于“程序员小调查”想了解一下程序员的工作、生活情况让大家更了解程序员真实的职场情况参与条件:上至八十,下至五岁头发少的脱发患者程序员参与奖励:参与填写有机会现金红包奖励如何回答问卷:点击文章最下方阅读原文,跳转到问卷,或是扫描下方二维码直接填写问卷~↓↓↓据说,填了问卷的程序员脱发都好了,bug少了,加班也少了,越活越年轻了,你还不来填吗?·END·  更多精彩请戳杨斌:教室的样子官宣!广东省数字技能培训示范企业《机制的校园生活》

  • [Go] 理解(*interface{})(nil) 赋值的变量是否为nil

    现在有这样两种赋值方式a:=(*interface{})(nil)varcinterface{} c=(*interface{})(nil)a现在是啥?(*interface{})(nil)意思是把nil类型转换为*interface{}类型a相当于vara*interface{}=nil,a是个指针,指向了nil,所以a是nilc现在是啥?c是interface{}类型,这个类型有两个属性,type和data,c的type属性是*interface{}有值,c的data属性是nil无值只有当type和data都是nil时,空接口才是nil,所以c不是nila:=(*interface{})(nil) log.Printf("%v\n",a==nil) varcinterface{} c=(*interface{})(nil) log.Printf("%v\n",c==nil)复制

  • 【SLAM】百度--基于深度注意力感知特征的自动驾驶视觉定位框架,实现了厘米级的定位精度!

    论文地址:https://arxiv.org/pdf/2003.03026.pdf代码:来源:百度自动驾驶技术部论文名称:DA4AD:End-to-EndDeepAttention-basedVisualLocalizationforAutonomousDriving原文作者:YaoZhou内容提要本文提出了一种基于深度注意力感知特征的自动驾驶视觉定位框架,实现了厘米级的定位精度。传统的视觉定位方案依赖于人工特征或道路上的人造物体。存在严重的外观或光线变化而导致的匹配不稳定问题,而且在有挑战性的场景中过于稀缺而无法提供稳定和鲁棒的定位结果。在本文中,试图基于深度注意力机制,通过一种新颖的端到端深度神经网络,在场景中寻找显著的、稳定的且有利于长期匹配的特征。此外,学习的特征描述子能够建立鲁棒匹配,从而成功地估计出高精度的最佳相机姿态。本文使用新收集的数据集全面验证了我们方法的有效性,该数据集具有高质量的真实轨迹和传感器之间的硬件同步。实验结果表明,在各种具有挑战性的环境下,相比于基于激光雷达的定位方案,本文方法具有相当高的定位精度,从而为自动驾驶提供了一种可能的低成本定位方案。主要框架及

  • 利用深度学习技术检测x射线图像中的COVID-19

    01前言作者:AdrianRosebrock编译:HuangweiAI 原文:文末阅读原文 在本教程中,您将学习:采样COVID-19阳性的患者x射线图像的开源数据集 采样“正常”样本健康病人的x光照片 通过我们创建的数据集训练一个CNN自动检测x射线图像中的COVID-19 免责声明:本文所使用的方法和技巧仅供教学用途。这不是一项科学严谨的研究,也不会发表在期刊上。这篇文章是为那些对计算机视觉/深度学习感兴趣,并希望通过实际的、动手操作的方法来学习的读者准备的。02COVID-19如何在x射线图像中被检测到?COVID-19测试目前很难获得——它们的数量根本不够,而且制造的速度也不够快,这造成了恐慌。鉴于COVID-19测试套件有限,我们需要依赖其他诊断措施。出于本教程的目的,我想探讨x射线图像,因为医生经常使用x射线和CT扫描来诊断肺炎、肺部炎症、脓肿和/或淋巴结肿大。由于COVID-19攻击我们呼吸道的上皮细胞,我们可以用x射线来分析病人肺部的健康状况。考虑到几乎所有的医院都有x射线成像仪,在没有专门的测试工具的情况下,使用x射线来测试COVID-19是有可能的。缺点是,x

  • PHP设计模式——策略模式

    定义一系列算法,封装每个算法,并使它们可互换。策略使算法独立于使用该算法的客户端而变化。通勤是我们日常生活的一部分。每天,当我们离开家上班时,我们必须选择交通工具。作为通勤者,我们有很多选择,出租车,公共汽车或火车,这实际上取决于我们的心情和我们所处的状况。就像你出门时间来得很晚而赶时间一样,那么你可能会乘出租车。在另外的某天,如果你有充足的时间并不在有没有座位,那么乘公共汽车是一个不错的选择。在我们想要确保我们准时到达某个位置而又不会遇到交通拥堵的麻烦的日子里,我们会坐火车。这是一个策略模式的完美示例。公共汽车,火车和出租车都是交通工具,但它们当然在许多方面有所不同。它们在成本上彼此不同,并且它们采用不同的路线将您带到目的地。它们是相同的,因为尽管旅行时间长短不一,但它们都是到达目的地的一种方式。他们都属于一个范畴,即运输。我们首先来创建一个关于运输(Transportation)的接口:interfaceTransportation { functiontransport(Passenger$passenger); }复制创建一个实现Transportation接口的Bus类:cl

  • shell的特殊符号以及其他命令

     shell特殊符号cut命令:cut-d(截取指定的符号分段)-f(截取的段落如果直接一个那么直接输入数字1或者n如果有多个那么在中间加上,或者1-n )cut-c可以直接指定第几个字符,如果使用-c那么就不需要-d和-f wc-l统计有多少行,wc-m统计有多少个字符,wc-w统计有多少个词wc-w统计有多少个词,词与词中间用空格分割的才算一个词。uniq可以去除重复的字符,一般使用是先排序,在去除重复字符。切割的同时可以指定前缀,前缀可以任意修改。切割也可以指定行。shell特殊符号(下):多条命令可以写到一行中间使用; 号分割。>正确重定向>>正确追加重定向2>错误重定向2>>错误追加重定向&>正确错误重定向(可以把正确和错误的内容输出到同一个文件里面)||当前面的命令执行成功那么后面的命令便不会执行,反之当前面命令执行错误那么就会执行后面的命令。&&当前面命令执行成功那么才会执行后面的命令,反之当前面命令执行错误那么后面的命令就不会执行。扩展 1. source exec 区别 http://alsww.blo

  • 报告:中国人对AI的乐观程度远超其他国家

    安妮编译自CNBC 量子位出品|公众号QbitAI放眼全球,哪个国家对未来科技和人类的工作前景最乐观?是中国。65%的中国人持乐观态度,认为AI和机器人技术将在未来十年创造更多工作机会。这份来自数字传播公司电通安吉斯的报告DigitalSocietyIndex(数字社会指数)显示,在全球10个国家的2万名被调查者中,平均只有29%的人认为新兴技术将创造新的就业机会。中国对就业前景的乐观态度远超过全球平均水平。而这其中,英国和德国是最悲观的国家,平均每个国家只有18%的被调查者认为新兴科技将提供就业机会。在美国,有23%的人持乐观态度。△在数字经济的大背景下,除了中国,其他国家一半以上被调查者对未来工作持悲观态度拥抱新技术中国正在AI跑道上疾驰。去年7月,国务院印发的《新一代人工智能发展规划》中明确了中国AI发展的战略目标。计划到2030年,人工智能核心产业规模超过1万亿元,带动相关产业规模超过10万亿元。今年1月初,北京宣布将斥资21亿美元在门头沟内建设中关村人工智能科技园,预期将有400多家公司进入科技园区办公,年产值约500亿元。中国对AI和机器人等技术的乐观,不仅体现在政府和政策

  • 版权:站到大数据肩上

    在刚刚结束的第七届中国版权年会上,传统出版与新兴互联网企业同席,一起探讨如何在大数据时代进行版权的保护和开发。“如何把分散的版权资源聚合起来?”“如何让数据资源和版权资源互利互促?”成为关注热点。数字化版权有根据可循“根据美国国家科学委员会今年上半年出版的报告,高科技重心正在向亚洲转移,尤其是转移到中国手中。”国家互联网信息办公室副主任彭波表示,我国正在告别山寨,走向创新大国。在这一过程中,保护知识产权已经成为我国互联网发展的命门。“我国从制造大国到创新大国,最重要的就是知识产权保护制度保驾护航。为了互联网的未来,人们需要从我做起,从现在做起。”无论是在文化业内还是在互联网业内,版权保护的长期共识正渐渐形成。尤其是掌握内容传播渠道的互联网运营者们,从市场实践中认识到保护自身的知识产权和版权,尊重他人的知识产权和版权,最终可以构建起良好的市场生态,并凝聚起自身的核心竞争力。从几年前搜狐网力推独播剧,到腾讯、阿里巴巴、百度等花巨资在全球范围兼并企业,购买版权,打造正版内容提供商,再到最近小米宣布投资优酷土豆,花10亿美元投资视频内容产业,显示其致力于原创内容生产的雄心。2013年年底,视频

  • 腾讯云云监控删除报警规则api接口

    1.接口描述接口请求域名:monitor.tencentcloudapi.com。 批量删除Prometheus报警规则 默认接口请求频率限制:20次/秒。 APIExplorer提供了在线调用、签名验证、SDK代码生成和快速检索接口等能力。您可查看每次调用的请求内容和返回结果以及自动生成SDK调用示例。 2.输入参数以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见公共请求参数。 参数名称 必选 类型 描述 Action 是 String 公共参数,本接口取值:DeleteAlertRules。 Version 是 String 公共参数,本接口取值:2018-07-24。 Region 是 String 公共参数,详见产品支持的地域列表,本接口仅支持其中的:ap-beijing,ap-chengdu,ap-chongqing,ap-guangzhou,ap-hongkong,ap-mumbai,ap-nanjing,ap-shanghai,ap-shanghai-fsi,ap-shenzhen-fsi,ap-singapo

  • 支付宝即时到账接口的集成和使用

    支付宝即时到账接口的集成和使用 如果商户想在自己的网站上,集成支付宝的即时到账接口,首先要申请该服务,申请地址:https://b.alipay.com/order/productDetail.htm?productId=2012051600355662 商户系统请求-支付宝响应交互模式,即支付宝接口集成及使用的工作原理:   根据这个原理图,我们可以把集成支付宝接口的步骤划分如下: 产品参考:http://www.jinhusns.com/Products/Download/?type=xcj 一.    请求 1. 构造请求数据 商户根据支付宝提供的接口规则,通过程序生成得到签名结果及要传输给支付宝的数据集合。 Ø  选定参数 Ø  排序生成待签名字符串 对参数数组里的每一个值从a到z的顺序排序,若遇到相同首字母,则看第二个字母,以此类推。排序完成之后,再把所有数组值以“&”字符连接起来, 如: _input_charset=gbk&out_trade_no=674

  • [转载]Memcached缓存服务的简单安装

    1、Linux下的安装方法 下载:wget http://memcached.org/latest tar -zxvf memcached-1.x.x.tar.gz cd memcached-1.x.x ./configure && make && make test && sudo make install 启动:memcached -d start 其他有关memcached的参数参考手册   2、Windows系统下安装方法 下载地址:http://pan.baidu.com/s/1kTBkV0z 将下载的压缩包解压到电脑的某个盘上,以E盘为例: 解压后的目录结构E:\memcached   打开命令行: cd E:\memcached 执行服务注册命令 memcached.exe-d install 卸载服务命令 memcached.exe-d

  • 邮件激活

    发送邮件 生成授权码: 打开QQ邮箱      在MailUtils工具类中设置:    执行MailUtils工具类中的main方法:             点击激活分析     UserServiceImpl实现类: publicclassUserServiceImplimplementsUserService{ privateUserDaouserDao=newUserDaoImpl(); /** *注册用户 *@paramuser *@return */ @Override publicbooleanregist(Useruser){ //根据用户名查询用户对象 Useru=userDao.findByUsername(user.getUsername()); //判断u是否为null if(u!=null){ //用户名已存在,注册失败 returnfalse; } //保存用户信息 //设置激活码。唯一字符串 user.setCod

  • hello-nextjs

    Next.js是一个轻量级的React服务端渲染应用框架。 怎么使用 安装 在项目文件夹中运行: npminstall--savenextreactreact-dom 复制 将下面脚本添加到package.json中: { "scripts":{ "dev":"next", "build":"nextbuild", "start":"nextstart" } } 复制 下面,文件系统是主要的API.每个.js文件将变成一个路由,自动处理和渲染。 新建./pages/index.js到你的项目中: exportdefault()=><div>Welcometonext.js!</div> 复制 运行npmrundev命令并打开http://localhost:3000。要使用其他端口,你可以运行npmrundev---p<yourporthere>. 到目前为止,我们做到: 自动打包编译(使用webpack和babel) 热加载 以./pages作为服务的渲染和索引 静态文件服务../public/映射到/(可以创建一个静态目录在你的项目中

  • shell做成csv文件

    echoa,b,c,d>aa.csv 其实就是用逗号做分隔符   没有永远的记忆,只有勤奋的笔记

  • 第十二周作业

    学习总结 本周讲了事件处理。首先要有事件和监听器。事件是指一个对象发生状态变化。例如,一个按钮按下去,实际上按钮的状态就发生了改变,就会产生一个事件,如果要处理这个事件,就需要事件的监听者不断的监听事件的变化,并根据这些事件进行相应的处理。为什么我们需要监听器的存在呢?因为如果没有能够接收和处理事件的对象,图形界面程序所生成的一切事件都是无用的。这些事件监听器该怎么使用呢?都是使用接口的形式出现,处理时只需要实现此接口就行了。 WindowListener就是专门处理窗体事件的监听接口,旨在处理窗口事件的类要么实现此接口(及其包含的所有方法),要么扩展抽象类WindowAdapter(仅重写所需的方法)。然后使用窗口的addWindowListener方法将从该类所创建的侦听器对象向该Window注册。当通过打开、关闭、激活或停用、图标化或取消图标化而改变了窗口状态时,将调用该侦听器对象中的相关方法,并将WindowEvent传递给该方法。以下是WindowListener接口的方法: windowOpened打开 windowActivated激活(获得焦点状态) windowDea

  • python序列和其它类型的比较

    序列对象可以与相同类型的其他对象比较。它们使用 字典顺序 进行比较:首先比较两个python序列的第一个元素,如果不同,那么这就决定了比较操作的结果。如果它们相同,就再比较每个序列的第二个元素,以此类推,直到有一个序列被耗尽。如果要比较的两个元素本身就是相同类型的序列,那么就递归进行字典顺序比较。如果两个序列中所有的元素都相等,那么我们认为这两个序列相等。如果一个序列是另一个序列的初始子序列,那么短序列就小于另一个。字典顺序对字符串来说,是使用单字符的Unicode码的顺序。下面是同类型序列之间比较的例子 (1,2,3)<(1,2,4) [1,2,3]<[1,2,4] 'ABC'<'C'<'Pascal'<'Python' (1,2,3,4)<(1,2,4) (1,2)<(1,2,-1) (1,2,3)==(1.0,2.0,3.0) (1,2,('aa','ab'))<(1,2,('abc','a'),4)复制   注意对不同类型对象来说,只要待比较对象提供了合适的比较方法,就可以使用 

  • maven生命周期以及插件goal介绍

    maven生命周期分为三套,分别是clean、default和site,每个生命周期相互独立,互不影响。每个生命周期包含一些阶段(phase) clean生命周期主要是用来清理项目 default生命周期主要是构建项目 site生命周期主要是建立项目站点 clean生命周期包含phase如下: pre-clean执行一些清理前需要完成的工作。 clean清理上一次构建生成的文件。 post-clean执行一些清理后需要完成的工作。 default生命周期包含phase如下: validate initialize generate-sources process-sources处理资源文件,对变量进行替换工作 generate-resources process-resources复制resource文件到输出目录 compile编译java文件并复制到输出目录 process-classes generate-test-sources process-test-sources处理测试资源文件,对变量进行替换工作 generate-test-resources process

  • 基础组合游戏合集

    简介 本文介绍了博弈论中的七种基础组合游戏,并给出了证明,如有错误之处欢迎指正 Nim博弈 定义 Nim博弈的定义是: 给定\(n\)堆物品,第\(i\)堆物品有\(A_i\)个,两人轮流取,每次可以任选一堆取走任意多个物品,可以取光但不能不取,最后把物品全部取完者胜利 判断先手是否有必胜策略 结论 \(A_1\oplusA_2\oplus\cdots\oplusA_n\not=0\)时先手必胜 证明 参考Nim博弈原理与证明 例题 POJ2234 #include<iostream> #include<cstdio> usingnamespacestd; intmain() { intm; while(cin>>m){ intx,res=0; for(inti=1;i<=m;i++){ scanf("%d",&x); res=res^x; } printf("%s\n",res?"Yes":"No"); } return0; } 复制 Nimk博弈 定义 Nimk博弈是Nim博弈的变形,它的定义是: 给定\(n\)堆物品,第\

相关推荐

推荐阅读