Blue Bridge Cup sprint veintidós de 31 días [java]

ASC

Pregunta: Se sabe que el código ASCII de la letra A mayúscula es 65. ¿Cuál es el código ASCII de la letra L mayúscula?

Enlace del tema: https://www.lanqiao.cn/problems/1446/learning/

Está bien, nada que decir

Puede calcular el ASCII de L desde A, o puede generar directamente el ASCII de L

package daily;

/**
 * https://www.lanqiao.cn/problems/1446/learning/
 * 
 * @author Jia
 *
 */
public class day3_29_1 {
    
    
	public static void main(String[] args) {
    
    
		System.out.println((int) 'L');
	}
}

Número de permutaciones

imagen-20220329131528072

Enlace del tema: http://lx.lanqiao.cn/problem.page?gpid=T2716

Esta pregunta se puede resolver directamente con violencia y luego obtener una parte de los puntos. Siento que si quieres obtener la máxima puntuación, debes usar dp para resolverlo, pero si no puedes encontrar la ecuación recursiva, debes no lo haré. Si no cumples con las condiciones, puedes
encontrar un tipo grande que use dp. Si quieres aprender, puedes echar un vistazo, pero me siento un poco difícil. Analiza el enlace.

Segmentación de planos

imagen-20220329132239128

Enlace del tema: http://lx.lanqiao.cn/problem.page?gpid=T798

Análisis del tema:

  • Un plano cortado por una línea crea un plano más que el original.
  • Si en este momento se vuelve a cortar otra línea paralela a la anterior, habrá otro plano.
  • Si una línea se cruza con otras líneas, habrá más planos de corte para esta línea: el número de puntos donde esta línea se cruza con otras líneas +1.

Luego, después de saber lo anterior, puede ir a la simulación para hacer la pregunta. El sentimiento principal de esta pregunta es que lo anterior no es fácil de encontrar la regla, y se puede hacer un poco mejor después de encontrarla.

Además, cabe señalar que la intersección de una línea recta y otras líneas rectas puede repetirse. Por ejemplo, una línea recta se cruza con otras dos líneas rectas, por lo que esto solo puede considerarse como un punto, por lo que usé hashset en el código para eliminar puntos duplicados.

Además, recomiendo a todos leer una pregunta similar (preguntas del Grupo A 2020): http://oj.ecustacm.cn/problem.php?id=1512

package daily;

import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

/**
 * http://lx.lanqiao.cn/problem.page?gpid=T798
 * 
 * @author Jia
 *
 */
public class day3_29_3 {
    
    
	public static void main(String[] args) {
    
    
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		Set<Line> lineSet = new HashSet<>();
		for (int i = 0; i < N; i++) {
    
    
			int A = sc.nextInt();
			int B = sc.nextInt();
			lineSet.add(new Line(A, B));
		}
		sc.close();

		long ans = 2;// 一个直线可以将平面分为两个部分
		Line[] lines = lineSet.toArray(new Line[0]);
		for (int i = 1; i < lines.length; i++) {
    
    
			Set<Point> pointSet = new HashSet<>();
			Line newLine = lines[i];
			for (int j = 0; j < i; j++) {
    
    
				Line oldLine = lines[j];
				if (oldLine.A == newLine.A) {
    
    
					// 两线平行,无交点
					continue;
				} else {
    
    
					double x = (double) (newLine.B - oldLine.B) / (oldLine.A - newLine.A);
					double y = newLine.A * x + newLine.B;
					pointSet.add(new Point(x, y));// 去掉重复的交点
				}
			}
			ans += pointSet.size() + 1;
		}
		System.out.println(ans);
	}
}

class Line {
    
    
	int A;
	int B;

	public Line(int a, int b) {
    
    
		super();
		A = a;
		B = b;
	}

	@Override
	public int hashCode() {
    
    
		return A * 101 + B * 103;
	}

	@Override
	public boolean equals(Object obj) {
    
    
		Line newLine = (Line) obj;
		return A == newLine.A && B == newLine.B;
	}
}

class Point {
    
    
	double x;
	double y;

	public Point(double x, double y) {
    
    
		super();
		this.x = x;
		this.y = y;
	}

	@Override
	public int hashCode() {
    
    
		return (int) x * 101 + (int) y * 103;
	}

	@Override
	public boolean equals(Object obj) {
    
    
		Point newPoint = (Point) obj;
		return x == newPoint.x && y == newPoint.y;
	}
}

Supongo que te gusta

Origin blog.csdn.net/qq_46311811/article/details/123833179
Recomendado
Clasificación