NCPC26 Practise 3
This commit is contained in:
@@ -1,68 +0,0 @@
|
|||||||
package com.kattis.ncpc26.p2.pending;
|
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStreamReader;
|
|
||||||
|
|
||||||
public class D {
|
|
||||||
public static void main(String[] args) throws IOException {
|
|
||||||
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
|
|
||||||
|
|
||||||
char[][] board = new char[8][8];
|
|
||||||
|
|
||||||
for(int i = 0; i < 8; i++)
|
|
||||||
{
|
|
||||||
board[i] = br.readLine().toCharArray();
|
|
||||||
}
|
|
||||||
|
|
||||||
int[][] dig = {
|
|
||||||
{1,1}, {-1,1}, {-1,1}, {-1,-1}
|
|
||||||
};
|
|
||||||
|
|
||||||
for(int bx = 0; bx < 8; bx++)
|
|
||||||
{
|
|
||||||
for(int by = 0; by < 8; by++)
|
|
||||||
{
|
|
||||||
if(board[bx][by] == '*')
|
|
||||||
{
|
|
||||||
for(int i = 0; i < 8; i++)
|
|
||||||
{
|
|
||||||
if(i == bx) continue;
|
|
||||||
if(board[i][by] == '*')
|
|
||||||
{
|
|
||||||
System.out.println("invalid");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for(int i = 0; i < 8; i++)
|
|
||||||
{
|
|
||||||
if(i == by) continue;
|
|
||||||
if(board[bx][i] == '*')
|
|
||||||
{
|
|
||||||
System.out.println("invalid");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for(int i = 0; i < 2; i++)
|
|
||||||
{
|
|
||||||
int[] mod = dig[i];
|
|
||||||
int x = mod[0];
|
|
||||||
int y = mod[1];
|
|
||||||
int base = (i==0?0:7);
|
|
||||||
for(int j = 0; j < 8; j++)
|
|
||||||
{
|
|
||||||
if(base+x*j == bx && y*j == by) continue;
|
|
||||||
if(board[base+x*j][y*j] == '*')
|
|
||||||
{
|
|
||||||
System.out.println("invalid");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
System.out.println("valid");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
package com.kattis.ncpc26.p2.pending;
|
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStreamReader;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Locale;
|
|
||||||
import java.util.Scanner;
|
|
||||||
|
|
||||||
public class E {
|
|
||||||
public static void main(String[] args) throws IOException {
|
|
||||||
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
|
|
||||||
|
|
||||||
int n = Integer.parseInt(br.readLine());
|
|
||||||
|
|
||||||
int[] maxNumber = new int[n];
|
|
||||||
int[] minNumber = new int[n];
|
|
||||||
|
|
||||||
for(int i = 0; i < n; i++)
|
|
||||||
{
|
|
||||||
String hexNum = br.readLine().toUpperCase(Locale.ROOT);
|
|
||||||
|
|
||||||
if(hexNum.length() > 1 && (hexNum.startsWith("0") || hexNum.startsWith("D")))
|
|
||||||
{
|
|
||||||
hexNum = "d" + hexNum.substring(1);
|
|
||||||
}
|
|
||||||
{
|
|
||||||
minNumber[i] = Integer.parseInt(hexNum.replaceAll("B", "8").replaceAll("D", "0"), 16);
|
|
||||||
maxNumber[i] = Integer.parseInt(hexNum.replaceAll("8", "B").replaceAll("0", "D"), 16);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int maxOut = 0;
|
|
||||||
int minOut = 0;
|
|
||||||
|
|
||||||
for(int i = 0; i < n; i++) {
|
|
||||||
minOut += minNumber[i];
|
|
||||||
maxOut += maxNumber[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
System.out.println(Integer.toHexString(maxOut).toUpperCase(Locale.ROOT));
|
|
||||||
System.out.println(Integer.toHexString(minOut).toUpperCase(Locale.ROOT));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
package com.kattis.ncpc26.p3.pending;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.util.Scanner;
|
||||||
|
|
||||||
|
public class A {
|
||||||
|
public static void main(String[] args) throws IOException {
|
||||||
|
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
|
||||||
|
int num = Integer.parseInt(reader.readLine());
|
||||||
|
String s = reader.readLine();
|
||||||
|
String[] nums = s.split(" ");
|
||||||
|
for(int i = 1; i <= num; i++){
|
||||||
|
if(!(nums[i-1].equals("mumble") || Integer.parseInt(nums[i-1]) == i))
|
||||||
|
{
|
||||||
|
System.out.println("something is fishy");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
System.out.println("makes sense");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,112 @@
|
|||||||
|
package com.kattis.ncpc26.p3.pending;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
public class B {
|
||||||
|
public static void main(String[] args) throws IOException {
|
||||||
|
Map<Integer, Set<Integer>> exclusiveFollowing = new HashMap<>();
|
||||||
|
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
|
||||||
|
String in = reader.readLine();
|
||||||
|
int N = Integer.parseInt(in.split(" ")[0]);
|
||||||
|
int M = Integer.parseInt(in.split(" ")[1]);
|
||||||
|
for(int i = 0; i < M; i++)
|
||||||
|
{
|
||||||
|
in = reader.readLine();
|
||||||
|
int u = Integer.parseInt(in.split(" ")[0]);
|
||||||
|
int v = Integer.parseInt(in.split(" ")[1]);
|
||||||
|
Set<Integer> followings = exclusiveFollowing.getOrDefault(v, new HashSet<>());
|
||||||
|
followings.add(u);
|
||||||
|
exclusiveFollowing.put(v, followings);
|
||||||
|
}
|
||||||
|
|
||||||
|
ArrayList<Pair<Integer, Integer>> sortedFollowings = new ArrayList<>();
|
||||||
|
|
||||||
|
for(Map.Entry<Integer, Set<Integer>> user : exclusiveFollowing.entrySet())
|
||||||
|
{
|
||||||
|
int me = user.getKey();
|
||||||
|
int likesMe = 0;
|
||||||
|
for(int i : user.getValue())
|
||||||
|
{
|
||||||
|
if(!exclusiveFollowing.getOrDefault(i, new HashSet<>()).contains(me))
|
||||||
|
{
|
||||||
|
likesMe++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sortedFollowings.add(new Pair<>(me, likesMe));
|
||||||
|
}
|
||||||
|
|
||||||
|
int mostFollowedUser = 1, followers = 0;
|
||||||
|
for(Pair<Integer, Integer> user : sortedFollowings)
|
||||||
|
{
|
||||||
|
if(user.value > followers)
|
||||||
|
{
|
||||||
|
mostFollowedUser = user.key;
|
||||||
|
followers = user.value;
|
||||||
|
}
|
||||||
|
else if(user.value == followers)
|
||||||
|
{
|
||||||
|
if(user.key < mostFollowedUser)
|
||||||
|
{
|
||||||
|
mostFollowedUser = user.key;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
System.out.printf("%d %d", mostFollowedUser, followers);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Pair<K, V> {
|
||||||
|
/**
|
||||||
|
* The key of the pair.
|
||||||
|
*/
|
||||||
|
private K key;
|
||||||
|
/**
|
||||||
|
* The value of the pair.
|
||||||
|
*/
|
||||||
|
private V value;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new instance of Pair.
|
||||||
|
* @param key The key of the pair
|
||||||
|
* @param value The value of the pair
|
||||||
|
*/
|
||||||
|
public Pair(K key, V value) {
|
||||||
|
this.key = key;
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the key of the pair.
|
||||||
|
* @return The key of the pair
|
||||||
|
*/
|
||||||
|
public K getKey() {
|
||||||
|
return key;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the value of the pair.
|
||||||
|
* @return The value of the pair
|
||||||
|
*/
|
||||||
|
public V getValue() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the key of the pair.
|
||||||
|
* @param key The key of the pair
|
||||||
|
*/
|
||||||
|
public void setKey(K key) {
|
||||||
|
this.key = key;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the value of the pair.
|
||||||
|
* @param value The value of the pair
|
||||||
|
*/
|
||||||
|
public void setValue(V value) {
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,91 @@
|
|||||||
|
package com.kattis.ncpc26.p3.pending;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
public class D {
|
||||||
|
public static void main(String[] args) throws IOException {
|
||||||
|
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
|
||||||
|
String in;
|
||||||
|
int num = 0;
|
||||||
|
while(!(in = reader.readLine()).equals("0 0"))
|
||||||
|
{
|
||||||
|
Map<Integer, Set<Integer>> knownNumbers = new HashMap<>();
|
||||||
|
int p = Integer.parseInt(in.split(" ")[0]);
|
||||||
|
int c = Integer.parseInt(in.split(" ")[1]);
|
||||||
|
if(p == 1)
|
||||||
|
{
|
||||||
|
System.out.println("No");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
for(int i = 0; i < c; i++)
|
||||||
|
{
|
||||||
|
in = reader.readLine();
|
||||||
|
int a = Integer.parseInt(in.split(" ")[0]);
|
||||||
|
int b = Integer.parseInt(in.split(" ")[1]);
|
||||||
|
|
||||||
|
if(!(a < p || b < p || a == b))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
Set<Integer> numbersKnown = knownNumbers.getOrDefault(a, new HashSet<>());
|
||||||
|
numbersKnown.add(b);
|
||||||
|
knownNumbers.put(a, numbersKnown);
|
||||||
|
|
||||||
|
numbersKnown = knownNumbers.getOrDefault(b, new HashSet<>());
|
||||||
|
numbersKnown.add(a);
|
||||||
|
knownNumbers.put(b, numbersKnown);
|
||||||
|
}
|
||||||
|
|
||||||
|
Set<Integer> reached = new HashSet<>();
|
||||||
|
|
||||||
|
ArrayList<Integer> toTraverse = new ArrayList<>();
|
||||||
|
|
||||||
|
toTraverse.add(0);
|
||||||
|
|
||||||
|
while(!toTraverse.isEmpty())
|
||||||
|
{
|
||||||
|
int node = toTraverse.getFirst();
|
||||||
|
toTraverse.removeFirst();
|
||||||
|
if(reached.contains(node)) continue;
|
||||||
|
knownNumbers.getOrDefault(node, new HashSet<>()).forEach(
|
||||||
|
(num1) -> {
|
||||||
|
if(!toTraverse.contains(num1) && !reached.contains(num1))
|
||||||
|
{
|
||||||
|
toTraverse.add(num1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
reached.add(node);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(reached.size() < p)
|
||||||
|
{
|
||||||
|
System.out.println("Yes");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean prematureExit = false;
|
||||||
|
|
||||||
|
for(Map.Entry<Integer, Set<Integer>> e : knownNumbers.entrySet())
|
||||||
|
{
|
||||||
|
if(e.getValue().size() <= 1)
|
||||||
|
{
|
||||||
|
System.out.println("Yes");
|
||||||
|
prematureExit = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!prematureExit)
|
||||||
|
{
|
||||||
|
System.out.println("No");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
import com.kattis.ncpc25.log.rider.A;
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
|
||||||
|
|
||||||
public class ATest {
|
|
||||||
@Test
|
|
||||||
public void ATests()
|
|
||||||
{
|
|
||||||
assertTrue(test(-4));
|
|
||||||
assertTrue(test(57));
|
|
||||||
assertTrue(test(-302));
|
|
||||||
assertTrue(test(476));
|
|
||||||
assertTrue(test(999));
|
|
||||||
assertTrue(test(-999));
|
|
||||||
assertTrue(test(0));
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean test(int in)
|
|
||||||
{
|
|
||||||
int[] nums = A.getComponents(in);
|
|
||||||
int num = nums[0] + nums[1];
|
|
||||||
if(nums[0] == 0 || nums[1] == 0){
|
|
||||||
System.out.println("etleast one is 0");
|
|
||||||
System.out.println(in + " = " + nums[0] + " + " + nums[1]);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if((""+Math.abs(nums[0])).length() >= 4 || (""+Math.abs(nums[1])).length() >= 4){
|
|
||||||
System.out.println(in + " = " + nums[0] + " + " + nums[1]);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if(num != in)
|
|
||||||
{
|
|
||||||
System.out.println(in + " = " + nums[0] + " + " + nums[1]);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
import com.kattis.ncpc25.log.rider.C;
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
|
||||||
|
|
||||||
public class CTest {
|
|
||||||
@Test
|
|
||||||
public void CTestCases()
|
|
||||||
{
|
|
||||||
assertEquals("7 hours", C.countTime("Mon 08:00", "Mon 15:00"));
|
|
||||||
assertEquals("7 days", C.countTime("Mon 08:00", "Mon 08:00"));
|
|
||||||
assertEquals("2 minutes", C.countTime("Mon 08:00", "Mon 08:02"));
|
|
||||||
assertEquals("1 hour and 59 minutes", C.countTime("Mon 22:00", "Mon 23:59"));
|
|
||||||
assertEquals("7 days", C.countTime("Mon 08:00", "Mon 08:00"));
|
|
||||||
assertEquals("7 days", C.countTime("Mon 08:00", "Mon 08:00"));
|
|
||||||
assertEquals("7 days", C.countTime("Mon 08:00", "Mon 08:00"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
import com.kattis.ncpc25.log.rider.D;
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
|
|
||||||
import java.awt.*;
|
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
|
||||||
|
|
||||||
public class DTest {
|
|
||||||
@Test
|
|
||||||
public void DTests()
|
|
||||||
{
|
|
||||||
assertTrue(testMaxDiff(D.getTotalLength(new Point[]{new Point(-1, -7), new Point(-1, -11), new Point(0, -9), new Point(2, 2), new Point(1, -2), new Point(-2, -1), new Point(3, 1), new Point(-1, -5), new Point(0, -3), new Point(-3, -11)}), 17.186912));
|
|
||||||
assertTrue(testMaxDiff(D.getTotalLength(new Point[]{new Point(1, 0), new Point(0,0), new Point(1,1)}), 2));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean testMaxDiff(double value, double excpected)
|
|
||||||
{
|
|
||||||
if(value == excpected) return true;
|
|
||||||
return value <= excpected + Math.pow(10, -6) && value >= excpected - Math.pow(10, -6);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
import com.kattis.ncpc25.log.rider.J;
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
||||||
|
|
||||||
public class JTest {
|
|
||||||
@Test
|
|
||||||
public void JTest1()
|
|
||||||
{
|
|
||||||
assertEquals("59",J.jump(7, 9));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void JTest2()
|
|
||||||
{
|
|
||||||
assertEquals("infinity", J.jump(7,4));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void JTest9()
|
|
||||||
{
|
|
||||||
assertEquals("infinity", J.jump(7,4));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void JTest3()
|
|
||||||
{
|
|
||||||
assertEquals("7581167638793024", J.jump(100001, 123123123));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void JTest4()
|
|
||||||
{
|
|
||||||
assertEquals("infinity", J.jump(5, 3));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void JTest5()
|
|
||||||
{
|
|
||||||
assertEquals("0", J.jump(1, 0));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void JTest6()
|
|
||||||
{
|
|
||||||
assertEquals("21", J.jump(16, 6));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void JTest7()
|
|
||||||
{
|
|
||||||
assertEquals("10", J.jump(11, 4));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void JTest8()
|
|
||||||
{
|
|
||||||
assertEquals("210", J.jump(67, 20));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user