Your SlideShare is downloading. ×
2007 Icpc3
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

2007 Icpc3

547
views

Published on

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
547
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. ACM-ICPC 세미나 2007. 07. 10( 화 ) 14:00 발표자 컴퓨터과학과 05 학번 김승덕 연세대학교 정보특기자 YUTAR 2007 년 6 월 21 일 목요일
  • 2. Big Integer 필요성
    • 일반 변수의 표현 범위는 제한적
    • 천문학적인 수를 정확하게 표현하기 위해서는 가변적인 표현 범위를 가지는 자료구조가 필요
    연세대학교 정보특기자 YUTAR 2007 년 6 월 21 일 목요일
  • 3. Big Integer 구현 방법
    • 가장 쉽고 직관적인 방법
      • 문자열로 표현
      • 사람이 계산하는 것과 똑같이 계산
    • K 진수 사용
      • 하나의 배열 원소가 0 ~ K-1 까지의 값을 가짐
      • A n 의 1 은 A n-1 의 K
    • 각 단위 계산에서 표현 범위를 벗어나지 않도록 주의
    연세대학교 정보특기자 YUTAR 2007 년 6 월 21 일 목요일
  • 4. Big Integer 더하기 algorithm bigint_plus input array arr, integer num output array arr i ← 0 while num is not zero do k ← arr[i] + num arr[i] ← k % 1010 num ← k / 1010 i++ 연세대학교 정보특기자 YUTAR 2007 년 6 월 21 일 목요일
  • 5. Big Integer 빼기 algorithm bigint_plus input array arr, integer num output array arr i ← 0 while num is not zero do arr[i] ← arr[i] - num if arr[i] < 0 then arr[i] ← arr[i] + 2 16 num ← 1 i++ 연세대학교 정보특기자 YUTAR 2007 년 6 월 21 일 목요일
  • 6. 연습 문제 UVA10106
    • http://acm.uva.es/p/v101/10106.html
    • 두 수를 곱하는데 각각의 범위가 10 250 까지 이므로 Big Integer 문제
    UVA495
    • http://acm.uva.es/p/v4/495.html
    • Fibonacci 수를 출력하는 문제 n 이 5000 까지 입력될 수 있으므로 Big Integer 로 처리하여야 함
    UVA113
    • http://acm.uva.es/p/v1/113.html
    • 이분 검색을 사용하여 k 를 찾아냄
    연세대학교 정보특기자 YUTAR 2007 년 6 월 21 일 목요일
  • 7. 그래프 정의
    • 정점의 집합과 각 정점을 이어주는 간선의 집합으로 이루어짐
    • G = { V, E }
      • V = Vertex set 정점 집합
      • E = Edge set 간선 집합
    연세대학교 정보특기자 YUTAR 2007 년 6 월 21 일 목요일 서울 대전 광주 부산 제주
  • 8. 그래프 구현 방법
    • 인접 리스트
      • 간선 정보를 배열로 가짐
    • 인접 행렬
      • a ij 는 i 번째 정점과 j 번째 정점의 연결 정보를 가짐
      • 사용하는 메모리의 크기가 정점의 개수의 제곱에 비례
    • Linked List
      • 각 정점을 포인터로 연결
    연세대학교 정보특기자 YUTAR 2007 년 6 월 21 일 목요일
  • 9. 그래프 최단 경로 알고리즘
    • Dijkstra
      • 두 정점간의 최단 경로를 구하는 알고리즘
      • O(n 2 )
    • Floyd
      • 각 정점간의 최단 경로를 모두 구하는 알고리즘
      • 구현이 간단함
      • O(n 3 )
    연세대학교 정보특기자 YUTAR 2007 년 6 월 21 일 목요일
  • 10. 그래프 Dijkstra( 다잌스트라 ) 알고리즘
    • 시작 정점을 부분 그래프에 포함시킴
    • 부분 그래프에서 이동할 수 있는 정점 중 가장 가까운 정점을 선택
    • 선택된 정점을 부분 그래프에 포함시킴
    • 모든 정점이 다 포함될 때 까지 반복
    연세대학교 정보특기자 YUTAR 2007 년 6 월 21 일 목요일
  • 11. 그래프 Dijkstra( 다잌스트라 ) 알고리즘 연세대학교 정보특기자 YUTAR 2007 년 6 월 21 일 목요일
  • 12. 그래프 Floyd 알고리즘
    • a ij = if 정점 i 에서 정점 j 가 연결되어 있으면 then 간선의 길이 else ∞
    • a ij = min( a ij , a ik + a kj )
    • 구현이 매우 간단함
    • for i do
    • for j do
    • for k do
    • if a ij > a ik + a kj then a ij = a ik + a kj
    연세대학교 정보특기자 YUTAR 2007 년 6 월 21 일 목요일
  • 13. 트리 정의
    • 사이클 ( 순환 ) 이 없는 그래프
    • 노드 : 각 정점
    • 루트 : 최상위 노드
    • 리프 : 최하위 노드
    • 높이 : 루트 노드에서 리프 노드까지 거리
    연세대학교 정보특기자 YUTAR 2007 년 6 월 21 일 목요일
  • 14. 트리 정의
    • 사이클 ( 순환 ) 이 없는 그래프
    • 노드 : 각 정점
    • 루트 : 최상위 노드
    • 리프 : 최하위 노드
    • 높이 : 루트 노드에서 리프 노드까지 거리
    연세대학교 정보특기자 YUTAR 2007 년 6 월 21 일 목요일
  • 15. 트리 최소 신장 트리
    • 어떤 그래프에서 정점의 개수 V 에 대하여 V-1 개의 간선을 선택해 만든 트리를 신장 트리라고 함
    • 가능한 신장 트리 중에서 간선 가중치의 합이 최소가 되는 신장 트리를 최소 신장 트리 라고 한다 .
    • Kruskal
      • 간선을 가중치 순으로 오름차순 정렬하여 사이클이 만들어지지 않도록 하는 간선을 순차적으로 선택
    • Prim
      • 부분 최소 신장 트리에서 가능한 가장 작은 가중치의 간선을 선택
    연세대학교 정보특기자 YUTAR 2007 년 6 월 21 일 목요일
  • 16. 트리 이진 트리
    • 어떤 노드도 두 개 이하의 자식을 갖는 트리
    • 배열을 이용하여 쉽게 구현 가능
      • n 이 현재 노드일 때 n/2 는 부모 n*2, n*2+1 은 두 자식
    연세대학교 정보특기자 YUTAR 2007 년 6 월 21 일 목요일 1 2 3 4 5
  • 17. 트리 이진 트리
    • 이분 검색 트리
      • 트리를 생성할 때 왼쪽 자식이 오른쪽 자식보다 항상 크거나 작도록 함
      • 빠른 검색이 가능 log 2 n
      • 부모가 항상 자식보다 크거나 작도록 만든 완전 이진 트리
      • 배열을 사용하여 간단하게 구현 가능
      • Priority Queue 를 구현하는 데 많이 사용
    연세대학교 정보특기자 YUTAR 2007 년 6 월 21 일 목요일