일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 완전 탐색
- fsb
- 포맷스트링버그
- 큐
- 문자열 처리
- 동적 계획법
- 스택
- 브루트 포스
- 투 포인터
- 이진트리
- 스위핑 알고리즘
- OOB
- RTL
- ROP
- syscall
- 분할 정복
- DFS
- heap
- 이진 탐색
- BFS
- tcache
- 백트래킹
- 다이나믹 프로그래밍
- BOF
- 연결리스트
- House of Orange
- 에라토스테네스의 체
- 이분 탐색
- 수학
- off by one
Archives
- Today
- Total
SDJ( 수돈재 아님 ㅎ )
[C++] 2166 - 다각형의 면적 본문
문제 링크 : https://www.acmicpc.net/problem/2166
2166번: 다각형의 면적
첫째 줄에 N이 주어진다. 다음 N개의 줄에는 다각형을 이루는 순서대로 N개의 점의 x, y좌표가 주어진다. 좌표값은 절댓값이 100,000을 넘지 않는 정수이다.
www.acmicpc.net
알고리즘 분류는 CCW이지만,, 너무나도 간단한 신발끈 공식이 있어서 신발끈 공식을 사용했다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
#include<bits/stdc++.h>
#define endl '\n'
using namespace std;
typedef struct point
{
long long y, x;
}P;
P p[10005];
int main(void)
{
long long SUM = 0;
int N;
cin >> N;
for(int i = 0; i < N; ++i)
{
cin >> p[i].x >> p[i].y;
}
for(int i = 0; i < N; ++i)
{
SUM += p[i].x*p[(i+1)%N].y;
}
for(int i = 0; i < N; ++i)
{
SUM -= p[(i+1)%N].x*p[i].y;
}
printf("%.1lf\n", (double)abs(SUM)/2.0);
return 0;
}
|
'알고리즘 > Backjoon' 카테고리의 다른 글
[C++] 1963 - 소수 경로 (0) | 2020.02.01 |
---|---|
[C++] 11881 - 지우개 (0) | 2020.02.01 |
[C++] 1759 - 암호 만들기 (0) | 2020.01.30 |
[Python3] 18291 - 비요뜨의 징검다리 건너기 (0) | 2020.01.30 |
[C++] 18291 - 비요뜨의 징검다리 건너기 (0) | 2020.01.30 |
Comments