机械娃娃-IOI2018Japan.PDF

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
机械娃娃-IOI2018Japan

– doll 机械娃娃 所谓机械娃娃 ,是能够 自动地重复特定运动序列的娃娃 。在 日本 ,很多机械娃娃在古代就造出 了 。 机械娃娃的运动被一个 由多个器件组成的管管路路所控制 。这些器件通过管道连在一起 。每个器件都有一 个或两个出出口口 ,而且可以有任意多的 (也可以为零 )的入 口 。每个管道都从某个器件的出口连到同一 器件或其他器件的入 口 。每个入 口都连接恰好一个管道 ,而每个 出口也都连接恰好一个管道 。 为了描述娃娃是如何运动的 ,设想有一个球球放在这些器件之一的上面 。这个球在管路 中穿行 。在穿行 的每一步 ,它从所在器件的一个 出口离开该器件 ,沿着连接该出口的管道 ,进入管道另一头所连接的 器件 。 器件有三种类型 :起起点点 、触触发发器器和开开关关 。总共有恰好一个起点 , 个触发器和 个开关 ( 可以为 零 ) 。开关的数量 要由你 定 。每个器件都有唯一的序列号 。 起点是球最初所在的那个器件 。它有一个 出口 。它的序列号是 。 一旦球进入某个触发器 ,就会让娃娃做某个特定运动 。每个触发器都有一个 出口 。触发器的序列号是 从 到 。 每个开关都有两个 出口 ,被记为 “X”和 “Y” 。开关的状状态态或者为 “X” ,或者为 “Y” 。在球进入 某个开关后 ,它会从开关的当前状态所对应的出口离开 。此后开关将切换为另一状态 。最初 ,所有开 关的状态都是 “X” 。开关的序列号是从 到 。 告诉你触发器的数量 。再给你一个长度为 的序列 ,序列的每个元素都是某个触发器的序列号 。 Doll (1 of 5) 每个触发器会在序列 中出现若干次 (也可能是零次 ) 。你的任务是设计一个管路 ,以满足如下条 件 : 球在若干步之后返回到起点 。 当球首次返回到起点时 ,所有开关的状态都是 “X” 。 在球首次返回到起点时 ,此前它进入所有触发器的总次数恰好为 。这些被进入过的触发器 , 其序列号按照被球经过的顺序依次为 。 设 为球首次返回到起点时 ,球所引起的所有开关状态切换的总次数 。 不能超过 。 同时 ,你不要用太多的开关 。 实现细节 你需要实现下面的过程 。 ​create_circuit(int M, int[] A)​ M :触发器数量 。 A :长度为 的数组 ,其 中按照球进入的顺序 ,给出了被进入的触发器的序列号 。 该过程将被调用恰好一次 。 注意 , 的值是数组A的长度 ,你可以按照注意事项 中的有关内容 取得 。 你的程序需要调用下面的过程 作答 。 ​answer(int[] C, int[] X, int[] Y)​ C :长度为 的数组 。器件 ( )的出口被连到器件C[i] 。 X, Y :长度相同的两个数组 。这些数组的长度 为开关的数量 。对于开关 ( ) 说 ,其出口 “X”被连到器件X [j - 1] ,而出口 “Y”被连到器件Y [j - 1] 。 C 、X和Y中的任一元素必须是 到 的整数 (包括 和 ) 。 最多只能是 。 必须调用该过程恰好一次 。 由C 、X和Y所表示的管路必须满足题面 中的限制条件 。 如果上述条件不满足 ,你的程序将被判为Wrong Answer 。否则 ,你的

文档评论(0)

2105194781 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档