洛谷公开赛
转载自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\) 个时刻内,每个时刻都会发生如下事件:
- 首先,依然存活的无人机向正前方移动一格。
- 然后,所有存活的无人机按照编号从小到大的顺序依次执行下列操作之一:
- 无操作 (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\) 个正整数,依次表示每次转动的旋钮编号。
数据保证有解。
说明/提示
略(原题面基本没问题,可以考虑把应当是“转动”的地方改成转动,然后在段末加上句号)。
先写到这,咕咕咕。