Loading...
2024. 5. 10. 21:49

무방향 연결그래프에서 정점의 성질 관찰하기

18668번: Find the Vertex (acmicpc.net)   무방향 연결그래프가 주어지고, self-loop나 multiple edge가 없다. 정점의 번호가 1번부터 n번까지 되어있고, 시작정점 s번에서 다른 정점까지의 거리를 3으로 나눈 나머지가 배열로 주어진다. 여기서 s가 무엇인지 찾는 문제 n,m 제한이 50만이다보니, 하나하나 해보기는 어렵다. 일단 거리 배열에서 0인 값인 정점 번호가 일단 정답 후보가 될 것이다. 시작정점 s에서 거리가 3,6,9,... 3의 배수여도 0이기 때문에 정답이 아닌 정점이 있을 수도 있다. 또 하나 알 수 있는 점은, 시작정점 s라면 인접한 정점까지 거리는 무조건 1이다.   물론 위 그림과 같이 s에서 인접한 3개 정점과 똑같이 인접한 어떤 정점 A..

돌 무더기에서 팰린드롬(palindrome)인 정수 개수만큼 가져갈 때 이기는 방법

31648번: Palindrome Game (acmicpc.net)   돌 무더기에 s개의 돌이 있는데, A,B가 양의 정수 x개만큼 돌을 가져간다. 여기서 x는 palindrome이어야 한다.  palindrome은 앞에서 읽어도 뒤에서 읽어도 같은 수이다. 예를 들어 1, 121, 9009는 palindrome이다. 앞에 0을 붙이는 것은 허용하지 않는다. 예를 들어 990은 palindrome이 아니다. s가 주어질때, 최선을 다해 게임하는 둘에 대해 선공이 이기는지 후공이 이기는지 판단 -----------------------------------------------------------------------------------------------------------------------..

ABC 351 F번 복기 - 알고리즘 문제에 max함수를 바꾸는 트릭 2가지

F - Double Sum (atcoder.jp) F - Double SumAtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.atcoder.jp 문제는 매우 간단하다 A1,A2,A3,...,AN이 주어지면, $$\sum_{i = 1}^{n} \sum_{j = i+1}^{n} max(A_{j} - A_{i},0)$$을 구하는 문제 n제한이 40만이라 단순하게 풀면 당연히 시간초과...  1. max(a,b) = (|a-b| + a+b)/2 방법은 많이 있던데 아주 간단하고 경이로운 솔루션이 있어서 복기해본다 배열 A에 대한 함수 f를 다음과 같이..

코딩테스트 복기 - 구간합이 전부 똑같도록 3구간으로 나누는 방법(잘 모를때는 조건식을 써봐라)

1. 문제 구간 A를 1번부터 x번까지, 구간 B를 x+1번부터 y번까지, 구간 C를 y+1번부터 n번까지 나눈다. 각 구간의 모든 원소의 합을 각각 a,b,c라고 하자. a,b,c가 전부 같도록 x,y를 정하자. 여기서 1  그러한 방법의 수가 몇가지일까? n은 최대 50만 배열의 각 원소는 -100만부터 100만까지로 음수일수도 있다. 예를 들어 [1,2,3,0,3]이면.. A가 1번 2번 = 3 B가 3번 = 3 C가 4번 5번 = 3 --------------------------- A가 1번 2번  = 3 B가 3번 4번 = 3 C가 5번 = 3 2가지 있다.  2. 풀이 구간합이니까, prefix sum으로 누적합을 만들어야하는 것은 명확하다 [1,3,6,6,9] n = int(input())..

2024. 4. 14. 02:54

ABC349 D번 복기 - log를 구하는 가장 정확한 방법 - math.log를 기피해야하는 이유

https://atcoder.jp/contests/abc349/tasks/abc349_d D - Divide IntervalAtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.atcoder.jp  L부터 R-1까지 연속된 정수 수열이 주어질때, 이 수열을 최소 개수의 구간으로 나눌려고 한다 L  $li = 2^{k}(j), ri = 2^{k}(j+1)$을 만족해야한다. 접근은 상당히 잘 했다 현재 시점 L을 기준으로 $L = 2^{k}j$를 만족하는 모든 k를 먼저 찾는다. 이거는 L이 2로 나누어 떨어지면,..

100부터 1000000000000000까지 모든 정수의 최대공약수는 어떻게 구할 수 있을까

SW Expert Academy SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com a이상 b이하의 모든 정수의 최대공약수를 구하는 문제 a,b는 1부터 $10^{100}$까지이다. 예를 들어 {70, 105, 42}의 최대공약수는... 70과 105의 최대공약수는 35이고, 35와 42의 최대공약수는 7이므로, 70,105,42의 최대공약수는 7이다. 그러면 gcd(a,a+1,a+2,...,b)를 구하는 문제인데 a,a+1의 최대공약수를 g라 하면 g,a+2의 최대공약수 g, g,b의 최대공약수를 구하면 된다. 그런데 a,b가 최대 $10^{100}$이므로, 이렇게 구하면 시간초과 날것이다 https://deep..