A国有n个城市这n个城市排成一列依次编号为123n。一开始这n座城市之间都没有任何交通路线于是政府打算修建一些铁路来进行交通规划。接下来T天每一天会进行如下操作的其中一种:- L x:表示编号为 x 的城市与其左边的城市之间修建一条铁路。如果 x 左边没有城市或者已经修建了铁路则无视该操作;- R x:表示编号为 x 的城市与其右边的城市之间修建一条铁路。如果 x 右边没有城市或者已经修建了铁路则
import java.util.Scanner;
public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int t = sc.nextInt(); int[] left = new int[n + 1]; // left[i]表示从i开始往左最远能到达的城市编号 int[] right = new int[n + 1]; // right[i]表示从i开始往右最远能到达的城市编号 for (int i = 1; i <= n; i++) { left[i] = i; right[i] = i; } for (int i = 0; i < t; i++) { String op = sc.next(); int x = sc.nextInt(); if (op.equals("L")) { if (x > 1 && left[x - 1] == x - 1) { // x左边有城市且未修建铁路 left[x] = left[x - 1]; // 更新left[x] right[left[x - 1]] = x; // 更新right[left[x-1]] } } else if (op.equals("R")) { if (x < n && right[x + 1] == x + 1) { // x右边有城市且未修建铁路 right[x] = right[x + 1]; // 更新right[x] left[right[x + 1]] = x; // 更新left[right[x+1]] } } else { // op.equals("Q") System.out.println(left[x] + " " + right[x]); } } sc.close(); }
原文地址: https://www.cveoy.top/t/topic/hcaj 著作权归作者所有。请勿转载和采集!