[2389] 세상의 중심에서...

2019. 8. 25. 18:06·DEV/PS

한줄후기 : 제출 수가 적은건 풀지 말자

 

https://www.acmicpc.net/problem/2389

 

2389번: 세상의 중심에서...

첫째 줄에 N(1≤N≤100)이 주어진다. 다음 N개의 줄에는 x, y 좌표가 주어진다. 각각의 좌표는 실수값을 가지며, double 형으로 입력 받으면 되도록 주어진다.

www.acmicpc.net

기하 도전.

간단하게 여러 점들이 주어지면 그 점들을 모두 포함하는 가장 작은 원의 중심과 반지름을 구하는 문제이다.

처음에 중심을 각 x좌표 y좌표의 평균으로 두면 되는 것과 그 중심에서 가장 먼 점과의 거리를 반지름으로 구하면 된다고 알았으나.. 그게 구현하기 만만치 않았다. 중심을 구하긴 쉬운데 반지름이 영..

그러다 찾은 다른 분의 코드를 보고 따라 구현해봤다. - Gradient discent 알고리즘 이라고 한다.

 

http://codeforces.com/blog/entry/23554

 

http://ideone.com/vju6Uh  - 참고 사이트

 

Ideone.com

Ideone is something more than a pastebin; it's an online compiler and debugging tool which allows to compile and run code online in more than 40 programming languages.

ideone.com

 

Smallest Enclosing Circle/Sphere Problem - Codeforces

 

codeforces.com

#include <cstdio>
#include <cmath>
using namespace std;
double distance(double a, double b){
	return a*a+b*b;
}
int main(){
	int n;
	scanf("%d", &n);
	double a[101];
	double b[101];
	double x=0, y=0;
	for(int i=0; i<n; i++){
		scanf("%lf %lf", &a[i], &b[i]);
		x+= a[i];
		y+= b[i];
	}
	x = x/n;
	y = y/n;
	
	double P = 0.1, d,e,f,j;
	for (int i = 0; i < 30000; i++) {
		int f = 0;
		d = distance(x - a[0], y - b[0]);
		for (int j = 1; j < n; j++) {
			e = distance(x - a[j], y - b[j]);
			if (d < e) { d = e; f = j; }
		}
		x += (a[f] - x)*P;
		y += (b[f] - y)*P;
		P *= 0.999;
	}
	printf("%.10f %.10f ",x,y);
	printf("%.10f", sqrt(d));
	return 0;
}

 

어렵다.

'DEV > PS' 카테고리의 다른 글

[16466] 콘서트, c++  (0) 2019.09.04
[1920] 수 찾기  (0) 2019.08.25
[2493] 탑, c++  (0) 2019.08.23
[9461] 파도반 수열, c++  (0) 2019.08.21
[1158] 단어공부, c++  (0) 2019.08.18
'DEV/PS' 카테고리의 다른 글
  • [16466] 콘서트, c++
  • [1920] 수 찾기
  • [2493] 탑, c++
  • [9461] 파도반 수열, c++
jobchae
jobchae
말하는 감자지만, 코드를 끄적이는 Node.js 백엔드 개발자입니다.
  • jobchae
    JOBCHAE
    jobchae
  • 전체
    오늘
    어제
    • 🚀 JOBCHAE (182)
      • DEV (151)
        • PS (108)
        • Node.js (12)
        • React (3)
        • docker (1)
        • 잡다한 개발 일지 (21)
        • injection (1)
        • JS, TS (3)
        • DB (2)
      • 축구 (0)
      • 일상 (19)
      • 영화 (3)
      • 음악 (8)
  • 블로그 메뉴

    • 💻 Github
    • 🙋🏻 Linkedin
    • 📖 방명록
  • 링크

    • PS Github
  • 공지사항

  • 인기 글

  • 태그

    SOPT
    db
    PS
    리액트
    앱잼
    우선순위큐
    GitHub
    Express
    슬랙봇
    node.js
    렛츠락페스티벌
    DFS
    일상
    DP
    Nest.js
    nodejs
    슬랙
    회고
    백준
    react
    typescript
    위상정렬
    BFS
    이분탐색
    JavaScript
    개발
    솝트
    알고리즘
    mongoDB
    boj
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
jobchae
[2389] 세상의 중심에서...
상단으로

티스토리툴바