직사각형이 장애물로 존재하는 곳을 굴러가는 원의 자취에 관한 문제였던 것으로 기억한다.
자세한 복기는 문제가 공식적으로 업로드된 이후에 하도록 하겠다.
#define _USE_MATH_DEFINES #include <iostream> #include<math.h> #include<iomanip> using namespace std; double dis; int main(int argc, char** argv) { ios::sync_with_stdio(false); cin.tie(0); //setbuf(stdout, NULL); //주석풀고제출 int T, test_case; cout << fixed; cout.precision(12); cin >> T; for (test_case = 0; test_case < T; test_case++) { double r, st, en; cin >> r >> st >> en; double blk; cin >> blk; dis = 0; while (blk--) { double lef, rig, h; cin >> lef >> rig >> h; if (h >= r) { dis = dis + ((lef - r) - st); // 시작점에서 왼쪽가로 dis = dis + (h - r) * 2; dis = dis + (r * M_PI); dis = dis + rig - lef; st = rig + r; //시작점 이동 } else { double temp = sqrt(pow(r, 2) - pow(r - h, 2)); dis = dis + (lef - temp - st); dis = dis + rig - lef; double angle = atan2(temp, r - h); dis = dis + angle * r * 2 ; st = rig + temp; } } dis = dis + en - st; cout << "Case #" << test_case + 1 << '\n'; cout << dis << '\n'; } return 0; }
'알고리즘 문제 풀이 > 삼성 Code Ground' 카테고리의 다른 글
SCPC 2019 2차 예선: 1번 문제(C++) (0) | 2019.07.09 |
---|---|
SCPC 2019 1차 예선: 1번 문제 (C++) (0) | 2019.07.09 |
SCPC 2018 1차 예선: 회문인 수의 합 (C++) (0) | 2019.07.04 |
SCPC 2018 1차 예선: 버스타기 (C++) (0) | 2019.07.04 |