2016 ACM-ICPC World Final 후기 (2)

2016.05.16 (Beach Activities)

오늘은 참가자들에게는 특별한 일정이 없었습니다. (각 나라의 감독들은 미팅이 있었습니다) 스케줄에 보면 10:00~18:00 에 Beach Activities라고 적혀 있더군요. 그냥 바닷가에서 맘껏 놀면 되는 일정인 듯 합니다.


대회 기간 동안에는 IBM Chill Zone이라는 구역이 생깁니다. 이 곳에서는 다양한 보드게임과 VR 체험, IBM 기술을 소개하는 작은 부스, 피아노 등이 놓여있습니다. 무엇보다 에어컨이 나와서 무더운 푸켓에서 있을 곳 중 가장 선선하고 쾌적한 장소 중 하나입니다! 참가자들이 다양한 게임을 하면서 놀고 있습니다.

더 읽기댓글 쓰기

2016 ACM-ICPC World Final 후기 (1)

  안녕하세요! 저는 고려대학교에 다니는 이원철입니다. 2014년 러시아, 2015년 모로코에서 열린 ACM-ICPC World Final에 참가했습니다.


  본 글은 ACM-ICPC World Final의 모습을 소개하기 위해 2016년도 태국 푸켓에서 열린 World Final에서 고려대학교 팀의 deputy coach로 등록하여 직접 다녀와서 작성한 글입니다. 이 글을 통해 보다 많은 사람들이 World Final에 대한 관심과 꿈을 갖고 도전할 수 있는 동기가 되기를 바랍니다.

더 읽기댓글 쓰기

포인터가 어렵나요? (네)

0. 서론

C언어를 배우는 사람들에게 C언어의 어떤것이 어렵냐고 물어보면 열에 아홉은 포인터가 어렵다고 합니다.

더 읽기댓글 쓰기

다이나믹 프로그래밍 여러가지 점화식으로 풀어보기

1563번 문제: 개근상 문제를 여러가지 점화식으로 풀어봅시다.

출결사항은 출석, 지각, 결석으로 총 3가지가 있습니다.

개근상을 받을 수 없는 사람은 지각을 두 번 이상 했거나, 결석을 세 번 연속으로 한 사람입니다.

더 읽기댓글 쓰기

Mac/Linux ATOM 에디터에서 환경구성하기

Mac 에서 Atom 으로 환경을 구성해 사용하고 있습니다. 다음의 패키지를 받으면 유용합니다.

  1. linter-gcc : gcc 린터입니다. 적당한 규칙을 적용하고 있습니다. atom 에서 만든 린터의 경우 디폴트로 너무 강한 규칙을 적용하고 있어서 사용하기 좀 불편하더라고요. 주소 : https://atom.io/packages/linter-gcc

  2. terminal-plus : 터미널을 아톰 하단패널에서 사용할수 있습니다. 꽤나 편리합니다. 다만 무한로그가 찍히면 아톰이 뻗어버립니다. ㅡㅡㅋ 주소 : https://atom.io/packages/terminal-plus

더 읽기댓글 쓰기

나머지 연산의 곱셈 역원

정수 $a$$m$으로 나눈 나머지 연산의 곱셈 역원은 $a \times a^{-1} \equiv 1 \pmod m$을 만족하는 $a^{-1}$을 말합니다.

즉, $a^{-1} \equiv x \pmod m$을 만족하는 $x$를 말합니다.

역원은 $a$$m$이 서로소인 경우에만 존재합니다.

더 읽기댓글 쓰기

피보나치 수를 구하는 여러가지 방법

피보나치 수는 다음과 같이 정의되는 수열입니다.

  • $F_0 = 0$
  • $F_1 = 1$
  • $F_n = F_{n-1} + F_{n-2}$

피보나치 수를 조금 써보면, 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ... 와 같습니다.

더 읽기댓글 쓰기

점 3개의 방향성을 나타내는 CCW

세 점 P1(x1, y1), P2(x2, y2), P3(x3, y3)가 있을 떄, 점 3개를 이은 선분은 어떤 방향성을 나타내게 될까요? 11758번 문제: CCW

가능한 경우의 수는 총 3가지가 있습니다. 반시계 방향, 시계 방향, 일직선. 시계 방향을 -1, 일직선을 0, 반시계 방향을 1이라고 했을 때, P1은 검정색, P2는 초록색, P3을 파란색으로 나타내면 아래 그림과 같습니다.

더 읽기댓글 쓰기

세그먼트 트리 나중에 업데이트 해야지!

배열 A가 있고, 여기서 다음과 같은 두 연산을 수행해야하는 문제가 있습니다. 10999번 문제: 구간 합 구하기 2

  1. 구간 l, r (l ≤ r)이 주어졌을 때, A[l] + A[l+1] + ... + A[r-1] + A[r]을 구해서 출력하기
  2. i번째 수부터 j번째 수에 v를 더하기. A[i] += v, A[i+1] += v, ..., A[j-1] += v, A[j] += v

수행해야하는 연산은 최대 M번입니다.

더 읽기댓글 쓰기

가장 가까운 두 점 찾기

가장 가까운 두 점 찾기 문제는 2차원 평면 위에 점 N개가 있을 때, 거리가 가장 가까운 두 점을 찾는 문제입니다. (2261번 문제: 가장 가까운 두 점)

N이 작은 경우에는 모든 경우를 다해보는 방식을 이용해서 구현할 수 있습니다.

#include <cstdio>
int x[100000];
int y[100000];
int dist(int x1, int y1, int x2, int y2) {
    return (x1-x2)*(x1-x2) + (y1-y2)*(y1-y2);
}
int main() {
    int n;
    scanf("%d",&n);
    for (int i=0; i<n; i++) {
        scanf("%d %d",&x[i],&y[i]);
    }
    int ans = -1;
    for (int i=0; i<n-1; i++) {
        for (int j=i+1; j<n; j++) {
            int d = dist(x[i],y[i],x[j],y[j]);
            if (ans == -1 || ans > d) {
                ans = d;
            }
        }
    }
    printf("%d\n",ans);
    return 0;
}

더 읽기댓글 쓰기