环上的游戏

环上的游戏(cycle)
有一个取数的游戏。初始时,给出一个环,环上的每条边上都有一个非负整数。这些整数中至少有一个0。然后,将一枚硬币放在环上的一个节点上。两个玩家就是以这个放硬币的节点为起点开始这个游戏,两人轮流取数,取数的规则如下:
(1)选择硬币左边或者右边的一条边,并且边上的数非0;
(2)将这条边上的数减至任意一个非负整数(至少要有所减小);
(3)将硬币移至边的另一端。
如果轮到一个玩家走,这时硬币左右两边的边上的数值都是0,那么这个玩家就输了。
如下图,描述的是Alice和Bob两人的对弈过程,其中黑色节点表示硬币所在节点。结果图(d)中,轮到Bob走时,硬币两边的边上都是0,所以Alcie获胜。

 


现在,你的任务就是根据给出的环、边上的数值以及起点(硬币所在位置),判断先走方是否有必胜的策略。
【输入格式】
第一行一个整数N(N≤20),表示环上的节点数。
第二行N个数,数值不超过30,依次表示N条边上的数值。硬币的起始位置在第一条边与最后一条边之间的节点上。
【输出格式】
仅一行。若存在必胜策略,则输出“YES”,否则输出“NO”。
【样例】
cycle1.in
4
2 5 3 0
cycle1.out
YES

cycle2.in
3
0 0 0
cycle2.out
NO

最后取到数的人获胜

解:首先根据题意分析可得假使走过一条边那么每次将它一点点减小到0

和一次性将它减小到0是一样的,那么不妨每走过一条边,就将边上的数值

减为0;

数据范围n<=20

那么我们可以搜索所有的可行路线,

(相当于剪枝)一旦存在先手赢的做法,就返回

 

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<cmath>
 5 #include<cstring>
 6 #include<string>
 7 using namespace std;
 8 int n,a[30];
 9 int L(int x)
10 {
11     int p=(x-1+n)%n;
12     if(p==0) p=n;
13     return p;
14 }
15 int R(int x)
16 {
17     int p=(x+1+n)%n;
18     if(p==0) p=n;
19     return p;
20 }
21 bool fg;
22 //1 Alice 2 Bob
23 void dfs(int nw,int peo)
24 {
25 //    cout<<"uu "<<nw<<" "<<peo<<endl;
26     if(fg) return;
27     if(a[nw]==0 && a[L(nw)]==0)
28     {
29        if(peo==2) fg=1; 
30        return;
31     }
32     if(a[nw])
33     {
34         int tmp=a[nw];a[nw]=0;
35         dfs(R(nw),3-peo);
36         a[nw]=tmp;
37     }
38     if(a[L(nw)])
39     {
40         int tmp=a[L(nw)];a[L(nw)]=0;
41         dfs(L(nw),3-peo);
42         a[L(nw)]=tmp;
43     }
44 }
45 int main()
46 {
47     freopen("cycle.in","r",stdin);
48     freopen("cycle.out","w",stdout);
49     scanf("%d",&n);
50     for(int i=1;i<=n;++i) scanf("%d",&a[i]);
51     dfs(1,1);
52 //    for(int i=1;i<=n;++i)
53 //     cout<<i<<" PPP "<<L(i)<<" "<<R(i)<<endl;
54     if(fg) printf("YES");
55     else printf("NO");
56     return 0;
57 }//数据范围小,搜索 
代码

 

转载于:https://www.cnblogs.com/adelalove/p/9096908.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/397868.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python基础课程_2学习笔记3:图形用户界面

图形用户界面 丰富的平台 写作Python GUI程序前&#xff0c;须要决定使用哪个GUI平台。 简单来说&#xff0c;平台是图形组件的一个特定集合。能够通过叫做GUI工具包的给定Python模块进行訪问。工具包 描写叙述 Tkinter 使用Tk平台。非常easy得到。半标准。 wxpython 基于…

vim编辑器之按键说明

viim编辑器文本:纯文本,ASCII test;文本编辑种类:行编辑器:sed全屏编辑器:nano,vi其他编辑器:gedit 一个简单的图形编辑器gvim 一个vim编辑器的图形版本 一.打开文件几种方法命令格式:vim [options] [files]常用选项:#:打开文件后,直接让光标处于第#行的行首/PATTERN:打开…

idea ssm打war包_IDEA下从零开始搭建SpringBoot工程

SpringBoot的具体介绍可以参看其他网上介绍&#xff0c;这里就不多说了&#xff0c;就这几天的学习&#xff0c;个人理解&#xff0c;简而言之&#xff1a;如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring&#xff0c;MyBatis&#xff0c;Netty源码分析的朋友…

c语言一维数组转化为二维矩阵,js将一维数组转化为二维数组

遇到的问题&#xff1a;后端返回的是一组一维数组&#xff0c;但是需要展示的格式是二维数组&#xff0c;常见的场景举例&#xff1a;后台返回10个长度的数组&#xff0c;需要分成3个一组展示在banner上。例&#xff1a;[1,2,3,4,5,6,7,8,9,10] > [[1,2,3], [4,5,6], [7,8…

nano使用说明

Main nano help text The nano editor is designed to emulate 仿真、模拟 the functionality and ease-of-use of the UW Pico text editor. There are four main sections of the editor. The top line shows the program version, the current filename being edited, and w…

dataframe 众数的方法_学习数据分析数据方法论 [描述性统计分析]

数理统计&#xff1a;数理统计是以概率论为基础&#xff0c;研究社会和自然界中大量随机现象数量变化基本规律的一种方法。分为&#xff1a;描述统计(描述统计的任务是搜集资料&#xff0c;进行整理、分组&#xff0c;编制次数分配表&#xff0c;绘制次数分配曲线&#xff0c;计…

c语言高级语言期中测试答案,上海理工大学C语言2011期中试题和答案

C语言2010/2011学年 第二学期 期中测试高级语言程序设计(C)试卷 A □BA1. 输入一行字符&#xff0c;统计其中的英文字母个数。#include void main(){ char ch;int n0;printf(“Input a string:\n”);while(1){ chgetchar();if (ch \n ) break;if (ch> a && ch< z…

前端基础进阶(十):面向对象实战之封装拖拽对象

https://segmentfault.com/a/1190000012646488 https://yangbo5207.github.io/wutongluo/ 说明&#xff1a;此处只是记录阅读前端基础进阶的理解和总结&#xff0c;如有需要请阅读上面的链接 1.如何让元素动起来 要让元素动起来就要修改元素的top、left 、translate 属性。因为…

iOS - LocalCache 本地数据缓存

1、自定义方式本地数据缓存 1.1 自定义缓存 1 沙盒路径下的 Library/Caches 用来存放缓存文件&#xff0c;保存从网络下载的请求数据&#xff0c;后续仍然需要继续使用的文件&#xff0c;例如网络下载的离线数据&#xff0c;图片&#xff0c;视频文件等。该目录中的文件系统不会…

如何构建ASP.NET MVC4JQueryAJaxJSon示例

背景&#xff1a; 博客中将构建一个小示例&#xff0c;用于演示在ASP.NET MVC4项目中&#xff0c;如何使用JQuery Ajax。 直接查看JSon部分 步骤&#xff1a; 1&#xff0c;添加控制器(HomeController)和动作方法(Index),并为Index动作方法添加视图(Index.cshtml),视图中HTML如…

echarts 有引导线和内部文字_点、线、面构图的异同以及相互转化

点、线、面构图既有相似性&#xff0c;又有差异性。相似的是都有对齐、强调、群组、重复、突出层次的作用&#xff0c;不同的是点的特点是聚焦、线的特点是运动和方向性&#xff0c;面的特性是体量感、稳定性。点的情感最弱&#xff0c;线、面的情感要比点丰富。一、点、线、面…

c语言上机报告之水仙花数,C语言上机报告之水仙花数..doc

C语言上机报告之水仙花数.C语言程序设计上机报告课题名称&#xff1a;水仙花数的算法院 (系)&#xff1a;工程学院专业班 级&#xff1a; 052126学生姓名&#xff1a; 喻培学 号&#xff1a; 20121004040指导教师&#xff1a; 熊慕舟2013年11月24日C语言上机报告之水仙花数上机…

《Python黑帽子:黑客与渗透测试编程之道》 Web攻击

Web的套接字函数库&#xff1a;urllib2 一开始以urllib2.py命名脚本&#xff0c;在Sublime Text中运行会出错&#xff0c;纠错后发现是重名了&#xff0c;改过来就好&#xff1a; #!/usr/bin/python #codingutf-8 import urllib2url "http://www.baidu.com"headers …

vCenter Converter Standalone使用文档

文档目的能够使用vCenter Converter Standalone 将物理机操作系统迁移到虚拟机操作系统基础知识vCenter Converter Standalone 能将物理机上的操作系统、VMware虚拟机上的操作系统或者Hype-V 上的虚拟机操作系统迁移到VMware上。系统环境操作系统&#xff1a;Windows Server 20…

1093芯片做正弦波逆变器_正弦波逆变器中的SPWM调制(钟任生)

欢迎加入技术交流QQ群(2000人)&#xff1a;电力电子技术与新能源 905723370高可靠新能源行业顶尖自媒体在这里有电力电子、新能源干货、行业发展趋势分析、最新产品介绍、众多技术达人与您分享经验&#xff0c;欢迎关注我们&#xff0c;搜索微信公众号&#xff1a;电力电子技术…

android 手机短信恢复,安卓手机短信删除了怎么恢复?简单恢复的方法

原标题&#xff1a;安卓手机短信删除了怎么恢复&#xff1f;简单恢复的方法安卓手机短信删除了怎么恢复&#xff1f;手机短信是生活中不经常使用到&#xff0c;但是依然是十分重要的存在&#xff0c;因为我们现在比较喜欢用社交软件与别人进行交流&#xff0c;但是在一些相对重…

Oracle-查看oracle是否有表被锁

问题现象&#xff1a; 查看oracle是否有表被锁 解决方法&#xff1a; select sid,serial#,program,terminal,username,b.object_id,c.object_name from v$session a, v$locked_object b, dba_objects c where a.sid b.session_id and b.object_id c.object_id;转载于:http…

Python循环的一些基本练习

#1:# name input(请输入你的身份)# if name egon:# print(--> 超级管理员)# elif name tom:# print(--> 普通管理员)# elif name jack,rain:# print(--> 业务主管)# elif name 其他:# print(--> 普通用户)#2# today input(今天是星期几&…

bash下个人习惯的一些文件设置

2019独角兽企业重金招聘Python工程师标准>>> bash_profile export PATH/usr/local/bin:$PATH export EDITORviinputrc set editing-mode vi #set editing-mode emacs set show-all-if-ambiguous on set completion-ignore-case on set meta-flag on set conver…

docker打包镜像上传_Jenkins | 一键打包部署Spring Boot 应用的Docker镜像

一、前言1、本文主要内容将在项目中实际使用到的相关东西整理记录一波&#xff0c;同时可以方便其他同学在使用到的时候参考一下(自己也备忘)&#xff0c;有不对的地方&#xff0c;欢迎指出~~Docker部署SpringBoot 项目通用Dockerfile文件、脚本Jenkins新建任务图文详解3、本文…