15896번 - &+ +&
첫번째 태스크를 수행하는 코드의 로직은 다음과 같습니다.
A에서 i번째 비트를 가지는 원소의 갯수 * B에서 i번째 비트를 가지는 원소의 갯수 * 2 ^ i (0-based)
두번째 태스크를 수행하는 코드의 로직은 다음과 같습니다. (검색해서 힌트 받고 떠올렸습니다)
i번째 비트가 0인 A의 원소들 중의 최소, 최대 값
i번째 비트가 1인 A의 원소들 중의 최소, 최대 값
i번째 비트가 0인 B의 원소들 중의 최소, 최대 값
i번째 비트가 1인 B의 원소들 중의 최소, 최대 값
위의 값들을 전부 구해줍니다.
이후
A0 최소 + B0 최소 >= 2^i
A0 최대 + B1 최대 < 2^(i + 1)
A1 최대 + B0 최대 < 2^(i + 1)
A1 최소 + B1 최소 >= 2^i + 2^(i + 1)
위의 4가지 조건을 전부 만족하면 i번째 비트를 결과에 추가해줬습니다.
그러나 약 73% 에서 틀리는데, 정말 왜 틀리는지 모르겠습니다.
도와주시면 감사하겠습니다.
반례 찾았습니다
1
268435456
댓글을 작성하려면 로그인해야 합니다.
give654 1년 전 1
첫번째 태스크를 수행하는 코드의 로직은 다음과 같습니다.
A에서 i번째 비트를 가지는 원소의 갯수 * B에서 i번째 비트를 가지는 원소의 갯수 * 2 ^ i (0-based)
두번째 태스크를 수행하는 코드의 로직은 다음과 같습니다. (검색해서 힌트 받고 떠올렸습니다)
i번째 비트가 0인 A의 원소들 중의 최소, 최대 값
i번째 비트가 1인 A의 원소들 중의 최소, 최대 값
i번째 비트가 0인 B의 원소들 중의 최소, 최대 값
i번째 비트가 1인 B의 원소들 중의 최소, 최대 값
위의 값들을 전부 구해줍니다.
이후
A0 최소 + B0 최소 >= 2^i
A0 최대 + B1 최대 < 2^(i + 1)
A1 최대 + B0 최대 < 2^(i + 1)
A1 최소 + B1 최소 >= 2^i + 2^(i + 1)
위의 4가지 조건을 전부 만족하면 i번째 비트를 결과에 추가해줬습니다.
그러나 약 73% 에서 틀리는데, 정말 왜 틀리는지 모르겠습니다.
도와주시면 감사하겠습니다.