본문 바로가기

전체 글

Educational Codeforces Round 68 (Rated for Div. 2) E. Count The Rectangles E. Count The Rectangleshttps://codeforces.com/contest/1194/problem/E 가로선과 세로선이 합쳐서 n개 주어진다.가로선 2개와 세로선 2개를 선택해서 사각형을 만들 수 있는데, 이때 만들어지는 사각형의 개수를 구해보자. 가로선과 세로선을 입력받는데, 가로선은 y의 위치와 x1, x2의 위치, 세로선은 x의 위치와 y1, y2의 위치를 저장해놓자. 더 적은 선을 기준으로 탐색을 시작할 것이다. 이를 가로선이라고 해보자. 가로선을 기준으로 세로선들을 모두 비교할건데 기준이 되는 가로선을 세로선이 지나가는지 확인한다.그리고 각 세로선들을 입력받은 순서대로 번호를 메긴 후에, 기준이 되는 가로선을 지나가는지 여부를 기록할 것이다.이것을 비트셋 자료구조를 이용해서.. 더보기
Educational Codeforces Round 68 (Rated for Div. 2) D. 1-2-K Game D. 1-2-K Gamehttps://codeforces.com/contest/1194/problem/D 게임이론 문제인것 같은데 내가 게임이론을 잘 모른다..그래서 k값을 조정해가면서 패턴을 찾아보았다. k가 3의 배수일때 특정한 주기가 있다는 것을 발견했고, 그 패턴은 L WW L WW ... L 처럼 나온다.(직접 출력해보면 알 수 있음) 코드는 매우 간단함. 123456789101112131415161718192021222324252627282930313233343536#include using namespace std; typedef long long ll;typedef pair pii;typedef pair pll;#define rep(i, a, b) for(ll i=a; i> q; rep(t.. 더보기
Educational Codeforces Round 68 (Rated for Div. 2) C. From S To T C. From S To Thttps://codeforces.com/contest/1194/problem/C 매우 간단한 구현 문제이다.s, t, p가 주어지는데 p에서 하나씩 빼서 s의 아무 위치에 붙일 수 있다.s는 t와 똑같이 만들어야 한다. 일단 p가 가지고 있는 알파벳의 개수를 저장하자.s와 t를 비교해 나가면서 필요한 알파벳을 저장된 곳에 있으면 하나씩 빼온다. 만약 s를 t로 만들 수 없다면 NO를 출력하자. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758#include using namespace std; typedef long long ll;typ.. 더보기
Educational Codeforces Round 68 (Rated for Div. 2) B. Yet Another Crosses Problem B. Yet Another Crosses Problemhttps://codeforces.com/contest/1194/problem/B 함정이 숨겨진 구현 문제.row와 col이 교차하는 것이 1개라도 있도록 블록을 채워넣는 문제이다.다시말해 전부 칠해진 행과 열이 각각 한개 이상씩 있게 해야 한다. n x m이 40만개밖에 안된다.각 행에서 가득 차려면 더 채워야 하는 블록의 개수와, 각 열에서 더 채워야 하는 블록의 개수를 저장하자.전체를 탐색하면서 '.'인 경우에 해당 row와 col에 저장된 채워야 하는 개수를 합하고 1을 뺀다.'*'인 경우에 해당 row와 col에 저장된 채워야 하는 개수를 합한다.이 과정들에서 가장 최소의 값을 찾아 출력하자. 123456789101112131415161718.. 더보기
Educational Codeforces Round 68 (Rated for Div. 2) A. Remove a Progression A. Remove a Progressionhttps://codeforces.com/contest/1194/problem/A 해석이 난해했음..123456789가 주어졌을때, 첫번째 수를 뺀다.남은 수 23456789에서 두번째 수를 뺀다.남은 수 2456789에서 세번째 수를 뺀다.....이걸 반복하다가 i번째 수를 뺄 수 없을때 중단한다. 이때 n번째 수는?무조건 n번째 수가 있다는 것은 보장된다고 한다. 그냥 간단하게 짝수부터 제거하고, 짝수가 전부 제거됬다면 홀수를 제거하자.완전탐색으로 풀리는 문제다. 12345678910111213141516171819202122232425262728293031323334353637#include using namespace std; typedef long lon.. 더보기
Codeforces Round #526 (Div. 2) C. The Fair Nut and String C. The Fair Nut and Stringhttps://codeforces.com/contest/1084/problem/C #526은 해석이 정말 까다로운 것 같다... 문제에서 명시하는 strictly increasing sequences를 찾는 문제다.주어진 문자열에 'a'가 있다면 독립적인 sequences의 크기를 하나 늘려줄 수 있다.주어진 문자열에 'b'가 있다면 서로 독립적인 sequences들을 엮어줄 수 있다. 무슨 말이나면 abbaa에서 각 독립적인 sequences는 2개 있고, 각각의 크기는 1, 2이다.이 독립적인 sequences 사이에 b가 있다면 서로 독립적인 sequences 내의 원소끼리 짝을 지어 새로운 sequences를 만들 수 있다.이 과정을 반복해주면 된다... 더보기
Codeforces Round #526 (Div. 2) B. Kvass and the Fair Nut B. Kvass and the Fair Nuthttps://codeforces.com/contest/1084/problem/B kvass는 러시아의 전통주고, keg는 술을 담는 커다란 통이다.n개의 keg가 주어지고 각 keg별로 용량이 주어진다.s리터만큼의 kvass를 확보해야 하는데, kvass를 확보한 후의 남은 kegs에서 가장 적은 용량을 가진 keg가 있을텐데,그 용량이 최대가 되도록 kvass를 확보해야 한다. 해석이 잘 안되서 많이 헤맸던 문제인데, 해석만 되면 문제를 푸는 방법은 매우 간단하다. 먼저 주어진 keg들을 오름차순으로 정렬한다. 가장 적은 용량의 keg를 기준으로 각 keg에 들어있는 kvass의 용량은 어느정도인지 파악한다.예를들면 4, 3, 5의 용량이 주어졌을 때, 3.. 더보기
Codeforces Round #525 (Div. 2) D. Ehab and another another xor problem D. Ehab and another another xor problemhttps://codeforces.com/contest/1088/problem/D 으으.. interactive 문제다.Virtual 돌릴때는 못풀었지만, 친구의 도움을 받고 해결했다. 문제는 다음과 같다.(a, b)라는 두 수를 맞추는데, (c, d) 쌍을 질문으로 던질 수 있다.1 : a^c > b^d0 : a^c = b^d-1: a^c < b^d 질문을 받은 프로그램은 위와 같은 조건으로 결과값을 1, 0, -1을 반환하게 된다.질문은 최대(at most) 62개까지 할 수 있다. 이렇게 생각해 보았다."a와 b가 몇 자리인지 알아야 하지 않나?""최대 30자리니까 각 자리에 대해서 2번씩 질문하면 60번이네?""(0, 0)을 질.. 더보기