NCPC 2003년 G. subway planning

  • @,.@
    @,.@

    문제입니다.
    http://www.ida.liu.se/projects/progcontest/progsm/2003/problems/subway.pdf
    정답 코드
    http://www.ida.liu.se/projects/progcontest/progsm/2003/problems/subway.cpp
    문제의 내용은 다음과 비슷합니다.
    여기는 지하철을 원점을 중심으로 직선으로만 놓을수 있고, 주어진 흥미로운 곳(2차원 좌표) 지하철과 거리가 d만큼 되어야 합니다. 그래서 지어야 하는 지하철의 최소의 개수를 구하는 것인데요.
    흥미롱운 곳에서 지하철이 놓일수 있는 각을 계산해서 저장하는 방법으로 풀었네요
    제가 푼건아니고요. 보다가 이해가 안가서 정답 코드를 분석했는데 이상한 점이 있어서요.
    문제 내용은 예전에 아스탱님이 올리신 문제 A. Magic Sticks Again과 비슷합니다.
    http://algospot.com/zbxe/news/1254

     cnt+=list.size(); if (cnt<best) best=cnt; } cout << best << endl; } return 0; }  

    비슷한 방법으로 정렬해서, 한번씩 모두 돌면서 최대한 덥을수 있는것으로 카운터를 셉니다.
    이해가 안가는 것은 코드의 마지막 부분에서 cnt+=list.size(); 왜 list의 사이즈를 더해주는건가요? 1을 더해줘야 하는 거 아닌가요? 루프를 다돌고 list에 남아 있다는 것은 최초에 여기에 해당하는 것의 끝 각이 있다는 것은데, 그러면 최초의 점에 지하철을 놓으면 리스트에 있는 모든 좌표는 d안에 있게 되는거 아닌가요?

    [이 글은 과거 홈페이지에서 이전된 글입니다. 원문보기]

    16년 전
0개의 댓글이 있습니다.
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.