mk9901   2년 전

preview

지금까지 집계된 표 이후 저를 찍은 표가 x장 집계 된다면

arr[N + 1] + x

지금까지 집계된 표 이후  제가 아닌 후보를 찍은 표가 y장 집계 된다면

=> 본인 후보랑 더 많은 표를 가지는 사람이랑 비교하는 것만 아님.

=> 여러 후보들 사이에서 y장 더 집계한 후 더 많은 표를 가지는 후보를 찾아서 본인 후보랑 비교.

따라서 현재 가장 많은 표를 가진 다른 후보 vs 다양한 표를 가진 다른 후보들

max(mx, (total + y - 1) // n)


개인적으로 이 문제의 정답률이 낮은 이유가 지문을 읽고 그대로 해석된 방향성을 잡는 사람에 따라 정답률이 갈라지는 것으로 보임.

seawon0808   2년 전

저도 처음에 제일 표가 많은 사람이랑만 비교했다가 문제 제대로 이해하고 다시 풀었는데 자꾸 45%에서 틀렸다고 나옵니다.

혹시 제 코드 봐주실수 있나요?

mk9901   2년 전

반례

1 1
2 0 0

output

YES

answer

NO

1 4
2 0 1
1 100000 1
1 99999 2
2 0 0

output

NO
YES

answer

NO
NO

seawon0808   2년 전

14번째 줄에 c가 0일때를 생각하여 코드를 짜봤는데 그래도 같은 데서 틀렸다고 나오네요.

저를 조금만 더 도와주시면 정말 감사하겠습니다.

mk9901   2년 전

왠 플래그...?

mk9901   2년 전

전체 분량이 맞는지 체크했어요?

seawon0808   2년 전

제가 변수명을 대충 짓는 습관이 있어요..

빨리 습관을 고쳐야겠네요.

분량은 뭘 말씀하시는 건가요?

혹시 몰라서 변수들도 다 long long int 로 바꿨고, 배열 크기도 100001 로 잡아놨습니다.

flappybird   2년 전

"제가 아닌 후보를 찍은 표"는 정후가 아닌 다른 사람을 찍은 표 전부를 뜻합니다.

seawon0808   2년 전

제가 flapppybird님의 말씀을 잘 이해한 건지는 몰라도 다시 코드를 보니까 저는 25번 줄에서 다른 후보들한테 한 표만 주게 되어 있네요.

그래서 변수를 1개 더 추가해서 다른 후보들한테 정후를 이기거나 동점이지 않을때 최대한 많이 표를 줬습니다.

그래도 같은데서 틀렸다고 나오네요...

flappybird   2년 전

당선 될 가능성이 있다는것은 표 y개가 잘 분배되어서 당선되는 경우가 하나라도 있는 경우를 말합니다.

seawon0808   2년 전

변수 vote가 배열의 각 값마다 줄 수 있는 최대 개수를 세고 표 c개에서 표 vote개를 빼서 표를 다 분배했으면 (c <= 0) YES 아니면 NO를 출력하게 했습니다.

vote는 arr[n + 1] + b보다 1개가 적을 때까지 증가하므로 c >= 0이라는 것은 표 c개에서 정후를 이기지 못하게 표를 분배했을 때 표가 남았다는 것이니까 그 남은 표(c)의 개수가 1개이상이면 다른 후보들한테 더 표를 주면 정후와 표의 개수가 같거나 더 많아지는 거니까 정후가 당선되지 않다는 것을 의미합니다.

제가 틀린 것이 있으면 말씀해주세요.

flappybird   2년 전

예제를 다시 읽어 주세요. https://www.acmicpc.net/source... 이거 기준으로 설명하자면 2번 쿼리에서 c!=0인 경우 어떠한 경우라도 NO를 출력하는 것 같습니다.

seawon0808   2년 전

그 코드는 제가 잘못 제출한 코드입니다.

30번째 줄에 elected 대신에 c를 넣어야 돼요.

flappybird   2년 전

c<=0인 것과는 별개로 무조건 정후가 당선되지 못하는 다른 조건이 존재합니다.

mk9901   2년 전

preview

댓글을 작성하려면 로그인해야 합니다.