일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 수학
- 스택
- heap
- DFS
- 백트래킹
- 이진 탐색
- tcache
- 에라토스테네스의 체
- RTL
- 이분 탐색
- ROP
- OOB
- House of Orange
- 포맷스트링버그
- 연결리스트
- 다이나믹 프로그래밍
- 브루트 포스
- 큐
- fsb
- 완전 탐색
- BFS
- BOF
- 이진트리
- 투 포인터
- off by one
- 문자열 처리
- 분할 정복
- 스위핑 알고리즘
- 동적 계획법
- syscall
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 |