转载自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) 的范围为 (0sim4),(f) 的范围为 (0sim7)。
注:这里把 (f) 和 (h) 的顺序换了是因为操作描述和输入格式都是先 (h) 再 (f)。
在接下来的 (t) 个时刻内,每个时刻都会发生如下事件:
- 首先,依然存活的无人机向正前方移动一格。
- 然后,所有存活的无人机按照编号从小到大的顺序依次执行下列操作之一:
- 无操作 (N)。
- 上转向 (U): 将 (h) 的值修改为 (min(h + 1,4))。
- 下转向 (D): 将 (h) 的值修改为 (max(h - 1,0))。
- 左转向 (L): 将 (f) 的值修改为 ((f+1)mod 8)。
- 右转向 (R): 将 (f) 的值修改为 ((f-1)mod 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 的分数。
数据范围:(1le n, t, mathrm{hp}le100),(-100le x,y,zle100),(0le hle4),(0le fle7),(0lemathrm{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 ightarrow2 ightarrow3 ightarrow4 ightarrow1)),当你转动 (i) 号旋钮且这个旋钮在转动之前处于状态 (j) ,(i) 号旋钮和 (a_{i,j}) 号旋钮都会旋转一次。
注:这里使用“转动”和“旋转”两个不同的词来表示“不会引起连锁反应”。也避免了“旋转次数”这个有歧义的表达。
当所有旋钮都处于状态 (1) 时,机关就打开了。
由于旋钮年久失修,旋转一次很困难,而且时间很紧迫,因此 Steve 希望用最少的转动次数打开机关。
这个任务就交给你了。
输入格式
输入包含 (12) 行,每行包含 (5) 个正整数,其中第 (i) 行的第一个正整数表示 (i) 号旋钮的初始状态,第 (j+1) ((1le jle 4)) 个正整数表示 (a_{i,j}),即转动处于状态 (j) 的 (i) 号旋钮时会跟着一起旋转的旋钮编号。
输出格式
第一行包含一个整数 (n) 表示打开机关需要的最少转动次数。
第二行包含 (n) 个正整数,依次表示每次转动的旋钮编号。
数据保证有解。
说明/提示
略(原题面基本没问题,可以考虑把应当是“转动”的地方改成转动,然后在段末加上句号)。
先写到这,咕咕咕。