[JAVA] ABC --128 --A & B & C

AtCoder ABC 128 A&B&C&D AtCoder - 128

Je serai de retour pour résoudre E & F dans un proche avenir.

A - Apple Pie

	private void solveA() {

		out.println((nextInt() * 3 + nextInt()) / 2);
	}

B - Guidebook

--Maintenez [] [] de la chaîne de caractères, triez dans l'ordre des caractères par [] [0], et si [] [0] sont identiques, convertissez [] [1] en valeur numérique et triez par ordre décroissant

	private void solveB() {
		int n = nextInt();
		String[][] s = new String[n][3];

		for (int i = 0; i < n; i++) {
			s[i][0] = next();
			s[i][1] = next();
			s[i][2] = Integer.toString(i + 1);
		}
		Arrays.sort(s,
				(x, y) -> {
					if (x[0].compareTo(y[0]) < 0) {
						return -1;
					} else if (x[0].compareTo(y[0]) > 0) {
						return 1;
					} else {
						return -Integer.compare(Integer.parseInt(x[1]), Integer.parseInt(y[1]));
					}
				});

		for (int i = 0; i < s.length; i++) {
			out.println(s[i][2]);
		}
	}

C - Switches

--Recherche complète en utilisant un bit devenu possible d'écrire progressivement

Numéro de l'ampoule\Numéro de commutateur 1 2 3 4 5
1 0
2 1

Il y a donc autant d'options que $ 2 ^ {nombre de commutateurs} $

Plus précisément, essayez le modèle suivant ($ 2 ^ {nombre de commutateurs} $) Prenant l'exemple de sortie 3 comme exemple

modèle\commutateur 1 2 3 4 5
1 Commutateur 1 ON
Les ampoules 1 et 2 sont éteintes
2 Commutateur 1,2 ON
Les ampoules 1 et 2 sont allumées
3 Commutateur 1,2,3 ON
L'ampoule 1 est allumée. L'ampoule 2 est éteinte
xxx Commutateur 1,5 ON
L'ampoule 1 est allumée. L'ampoule 2 est éteinte
	private void solveC() {
		int n = nextInt();
		int m = nextInt();
		int[] k = new int[m];

		List<List<Integer>> s = new ArrayList<List<Integer>>();
		for (int i = 0; i < k.length; i++) {
			k[i] = nextInt();
			List<Integer> temp = new ArrayList<Integer>();
			for (int j = 0; j < k[i]; j++) {
				temp.add(nextInt());
			}
			s.add(temp);
		}
		int[] p = IntStream.range(0, m).map(i -> nextInt()).toArray();

		long res = 0;
		for (int i = 0; i < 1 << n; i++) {
			boolean isResult = true;
			for (int j = 0; j < m; j++) {
				//Obtenez la liste des boutons de l'ampoule j
				List<Integer> sList = s.get(j);
				//Est-il pair ou étrange que l'ampoule j soit allumée?
				int compareBase = p[j];
				//Combien de boutons nécessaires pour allumer l'ampoule j sont allumés
				int compare = 0;
				for (Integer buttonNum : sList) {
					/*
					 *Trouvez le bouton ON dans la liste des boutons de l'ampoule j
					 * buttonNum - 1 ->Numéro de bouton(Selon l'arrangement-1)
					 * (i & (1 << (buttonNum - 1)) ->Y a-t-il un drapeau à la position du numéro de bouton?
					 */
					if ((i & (1 << (buttonNum - 1))) >= 1) {
						compare++;
					}
				}
				//Juger le nombre de chances et de chances que le bouton soit allumé et juger si l'exigence de l'ampoule j est satisfaite
				if (compareBase != compare % 2) {
					isResult = false;
					break;
				}
			}
			if (isResult) {
				//Ce modèle a toutes les ampoules allumées
				res++;
			}

		}

		out.println(res);
	}

D - equeue

--Effectuez les 4 opérations suivantes ―― 1: prendre à gauche ―― 2: prendre de la droite ―― 3: Jetez votre main et placez-la à gauche ―― 4: Jetez votre main et placez-la à droite ―― 3 et 4 peuvent être effectués en même temps à la fin de l'opération (l'idée de jeter les choses inutiles à la fin), alors effectuez les opérations suivantes dans tous les modèles --De la gauche, prenez $ 0-max (n, K) $ fois --De la droite, prenez $ 0-min (n, (temps pris de k-l)) $ fois

	private void solveD() {
		int n = nextInt();
		int k = nextInt();
		long[] wk = new long[n];
		for (int i = 0; i < n; i++) {
			wk[i] = nextInt();
		}
		long res = 0;
		//Prenez autant que vous pouvez de la gauche
		for (int l = 0; l <= k; l++) {
			//Prenez autant que vous pouvez de la droite
			for (int r = 0; r <= k; r++) {
				//Pause si le nombre d'opérations dépasse k
				if (l + r > k) {
					break;
				}

				//Total disponible pour le moment
				long now = 0;
				List<Long> s = new ArrayList<Long>();
				int pickCount = 0;
				//Ajouter uniquement le montant obtenu du côté gauche
				for (int i = 0; i < Integer.min(l, n); i++) {
					long tmp = wk[i];
					now += tmp;
					s.add(tmp);
					pickCount++;
				}
				/*
				 *Ajouter uniquement le montant obtenu du côté droit
				 *Je joue avec max sur le côté droit
				 * 	-Parce que le nombre d'opérations (K) peut être supérieur à N
				 *  -Il y a deux boucles, l'une du côté gauche et l'autre du côté droit.
				 *Si K est supérieur à N, cela peut prendre la même chose
				 *Par conséquent, le nombre d'acquisition maximum d'origine de r et le nombre acquis par l sont comparés.
				 *   e.g.K>=Si N, l Entier.min(l, n)Et n est retourné.
				 */
				for (int i = n - 1; i > Integer.max(n - 1 - r, Integer.min(l, n)); i--) {
					long tmp = wk[i];
					now += tmp;
					s.add(tmp);
					pickCount++;
				}
				//Disposez-les de manière à ne pas en avoir besoin pour jeter les extras
				Collections.sort(s);

				//Le nombre de fois où vous pouvez jeter l'acquisition supplémentaire
				int d = k - pickCount;
				//Tu ne peux pas jeter plus que ce nombre de fois
				for (int i = 0; i < Integer.min(d, s.size()); i++) {
					//
					//Si la valeur du bijou retiré n'est pas négative, il n'est pas nécessaire de le jeter
					if (s.get(i) > 0) {
						break;
					}

					//Jetez les bijoux à valeur négative
					now -= s.get(i);
				}
				res = Long.max(res, now);
			}
		}
		out.println(res);
	}

Recommended Posts

ABC --013-A et B et C
ABC --023 --A & B & C
ABC --036-A et B et C
ABC --010 --A & B & C
ABC --028 --A & B & C
ABC --015 --A & B & C
ABC --128 --A & B & C
ABC --012-A et B et C
ABC --018 --A & B & C
ABC --054 --A & B & C
ABC --017 --A & B & C
ABC --029- A & B & C
ABC --022 --A & B & C
ABC --019 --A & B & C
ABC --020 --A & B & C
ABC --030- A & B & C
ABC --127 --A & B & C
ABC --007 --A & B & C
ABC --132- A & B & C
ABC --026 --A & B & C
ABC --014- A & B & C
ABC --016 --A & B & C
ABC --011-A et B et C
ABC --031 --A & B & C
ABC --021 --A & B & C
ABC --025 --A & B & C
ABC --024 --A & B & C
ABC --027 --A & B & C
ABC --080- A & B & C
ABC --129- A & B & C & D
ABC --122 --A & B & C & D
ABC --125- A & B & C & D
ABC --130- A & B & C & D
ABC --126 --A & B & C & D
ABC --134- A & B & C & D & E
ABC --131- A & B & C & D & E
Concours de programmation diverta 2019 A & B & C & D
AtCoder Beginner Contest 169 A, B, C avec rubis
Problème atcoder ABC113 C
ABC093 C - Mêmes entiers
problème atcoder ABC115 C
AtCoder Beginner Contest 170 A, B, C jusqu'au rubis
Une personne écrivant C ++ a essayé d'écrire Java
Faire un appel SOAP en C #
Appeler les fonctions du langage C depuis Swift
NLP4J [006-034] 100 coups de traitement de langage avec NLP4J # 34 "A B"