洛谷公开赛

转载自ouuan!!!!!!!!!!!!!!!!!!


title: 洛谷公开赛题面参考
date: 2019-08-14 11:38:49
categories: 出题
tags:

  • 出题规范
    top:

大约会按 CF(以及我个人?)的标准重写一下题面。如果想做一名优秀的出题人,可以参考一下。

也可以阅读我写的 ouuan 的出题规范

当然也欢迎大家对我写的题面提意见。

应该不定期更新吧,不可能一下把洛谷所有公开赛题面都写一遍..(咕咕咕)

zcq的退役赛

封锁

题目背景

Steve 带领队伍去 M 星消灭黑暗势力,即将降落时被 M 星上空的无人机拦截了。

为了突破封锁,成功降落,Steve 使用了电磁干扰仪,使无人机开始自相残杀。

然而,情况很快就变得混乱,无法了解当前的情况。

幸好 Steve 的部队已经记录了开始混战前的状况,并设法获得了无人机执行操作的顺序。

题目描述

每架无人机有下列属性:

  • 子弹攻击 (\(\mathrm{atk}\)),子弹防御 (\(\mathrm{def}\)),激光攻击 (\(\mathrm{mat}\)),激光防御 (\(\mathrm{mdf}\)),恢复能力 (\(\mathrm{fix}\))。
  • 当前生命值 (\(\mathrm{hp}\))。
  • 当前坐标 \((x, y, z)\)
  • 当前竖直朝向 \(h\)
  • 当前水平朝向 \(f\)

其中,\(h\) 的范围为 \(0\sim4\)\(f\) 的范围为 \(0\sim7\)

注:这里把 \(f​\)\(h​\) 的顺序换了是因为操作描述和输入格式都是先 \(h​\)\(f​\)

在接下来的 \(t​\) 个时刻内,每个时刻都会发生如下事件:

  1. 首先,依然存活的无人机向正前方移动一格。
  2. 然后,所有存活的无人机按照编号从小到大的顺序依次执行下列操作之一:
    • 无操作 (N)。
    • 上转向 (U): 将 \(h\) 的值修改为 \(\min(h + 1,4)\)
    • 下转向 (D): 将 \(h\) 的值修改为 \(\max(h - 1,0)\)
    • 左转向 (L): 将 \(f\) 的值修改为 \((f+1)\bmod 8\)
    • 右转向 (R): 将 \(f\) 的值修改为 \((f-1)\bmod 8\)
    • 修复 (F): 将 \(\mathrm{hp}\) 增加 \(\mathrm{fix}\)
    • 子弹 (A): 使位于这架无人机正前方最近的依然存活的飞机受到攻击,若当前飞机的 \(\mathrm{atk}​\) 值大于目标飞机的 \(\mathrm{def}​\) 值,则目标受到当前飞机的 \(\mathrm{atk}​\) 减去目标飞机的 \(\mathrm{def}​\) 点伤害,否则目标不会受到伤害。如果目标处有多架飞机,编号最小的那一架会成为目标。如果这架无人机正前方没有依然存活的飞机,则不会有飞机受到伤害。
    • 激光 (M): 使位于这架无人机正前方的所有依然存活的飞机受到攻击,若当前飞机的 \(\mathrm{mat}​\) 值大于目标飞机的 \(\mathrm{mdf}​\) 值,则目标受到当前飞机的 \(\mathrm{mat}​\) 减去目标飞机的 \(\mathrm{mdf}​\) 点伤害,否则目标不会受到伤害。

受到伤害即 \(\mathrm{hp}\) 值减小,当 \(\mathrm{hp}\) 值小于等于 \(0​\) 时,飞机就坠毁了。

“正前方一格”的定义如下表(表中为 \((x,y,z)​\) 的增量):

{% asset_img 71703.png %}

"正前方"要么是“正前方一格”,要么是“正前方一格”的“正前方”,不包含自身

输入格式

第一行包含两个正整数 \(n\)\(t\),分别表示飞机数和时刻数。

接下来 \(n\) 行中的第 \(i\) 行,每行包含 \(11\) 个整数和一个长度为 \(t\) 的字符串,这 \(11\) 个整数分别代表 \(i\) 号飞机初始时的 \(x\), \(y\), \(z\), \(h\), \(f\), \(\mathrm{atk}\), \(\mathrm{def}\), \(\mathrm{mat}\), \(\mathrm{mdf}\), \(\mathrm{hp}\), \(\mathrm{fix}\)。字符串中的第 \(j\) 个字符表示 \(i\) 号飞机在第 \(j\) 个时刻进行的操作,每个字符代表的操作见题目描述,保证字符串中只包含 N, U, D, L, R, F, A, M。

输出格式

输出包含 \(n\) 行,其中第 \(i\) 行包含四个整数,若 \(t\) 个时刻过后 \(i\) 号飞机依然存活则前三个整数表示其 \(t\) 个时刻过后的坐标,第四个整数表示其 \(t\) 个时刻过后的 \(\mathrm{hp}\);否则前三个整数表示其坠落前的坐标,第四个整数为 \(0\)

说明/提示

\(1\) 号和 \(2\) 号两架飞机移动并改变朝向后互相面对,随后它们分别向对面疯狂开火,最终 \(1\) 号飞机率先击落 \(2\) 号飞机,因为 \(2\) 号飞机已经坠毁,所以 \(1​\) 号飞机不会被击落。

而它们身后分别跟着两架飞机,\(2\) 号飞机使用激光,所以 \(3\) 号飞机也会受到伤害,\(1\) 号飞机使用子弹,所以 \(4\) 号飞机不会受到伤害,直到 \(2\) 号飞机坠毁后,\(1\) 号飞机发出最后一颗子弹,对 \(4\) 号飞机造成了一点伤害。

测试时,每个 Subtask 包括 \(3​\) 个测试点,全部通过才能得到该 Subtask 的分数。

数据范围:\(1\le n, t, \mathrm{hp}\le100\)\(-100\le x,y,z\le100\)\(0\le h\le4\)\(0\le f\le7\)\(0\le\mathrm{atk,def,mat,mdf,fix}\le100\)

注:原题面中“合理范围”实在不知道是什么,只能随便瞎猜了。

  • Subtask1(12pts): 出现的操作只有 N。
  • Subtask2(14pts): 出现的操作只有 N, F。
  • Subtask3(15pts): 出现的操作只有 N, F, L, R。
  • Subtask4(17pts): 出现的操作只有 N, F, L, R, U, D。
  • Subtask5(19pts): 出现的操作只有 N, F, L, R, U, D, M。
  • Subtask6(23pts): 无特殊限制。

机关

题目背景

Steve 成功降落后,在 M 星上发现了一扇大门,但是这扇大门是锁着的。

题目描述

这扇门上有一个机关,上面一共有 \(12\) 个旋钮,每个旋钮有 \(4\) 个状态,分别用 \(1\), \(2\), \(3\), \(4\) 表示。

每个旋钮只能向一个方向旋转(\(1\rightarrow2\rightarrow3\rightarrow4\rightarrow1\)),当你转动 \(i\) 号旋钮且这个旋钮在转动之前处于状态 \(j\)\(i\) 号旋钮和 \(a_{i,j}​\) 号旋钮都会旋转一次。

注:这里使用“转动”和“旋转”两个不同的词来表示“不会引起连锁反应”。也避免了“旋转次数”这个有歧义的表达。

当所有旋钮都处于状态 \(1\) 时,机关就打开了。

由于旋钮年久失修,旋转一次很困难,而且时间很紧迫,因此 Steve 希望用最少的转动次数打开机关。

这个任务就交给你了。

输入格式

输入包含 \(12\) 行,每行包含 \(5\) 个正整数,其中第 \(i\) 行的第一个正整数表示 \(i\) 号旋钮的初始状态,第 \(j+1\) (\(1\le j\le 4\)) 个正整数表示 \(a_{i,j}\),即转动处于状态 \(j\)\(i\) 号旋钮时会跟着一起旋转的旋钮编号。

输出格式

第一行包含一个整数 \(n​\) 表示打开机关需要的最少转动次数。

第二行包含 \(n​\) 个正整数,依次表示每次转动的旋钮编号。

数据保证有解。

说明/提示

略(原题面基本没问题,可以考虑把应当是“转动”的地方改成转动,然后在段末加上句号)。


先写到这,咕咕咕。

posted @ 2019-08-22 14:28  ShineEternal  阅读(272)  评论(0编辑  收藏  举报