ABC 196/D - Hanjo
문제 개요
해법
공식 설명서를 보면 DFS 테스트만이 모든 배치 방법을 보여줍니다.계산량을 가늠할 수 있기 때문에 알면 문제없지만 미리 계산량 상한선을 주는 해법을 준다.
송어마다 다음과 같은 세 가지 상태가 있다.
좀 더 자세하게 아래처럼 세분화
HW 송어 중 A 송어를 선택,
\binom{HW}{A}\times 2^A\leq 3,294,720
를 참고하십시오.이렇게 되면 파리에서 O(HW)를 쳐도 상관없다.
2^A 거리의 전체 탐색은 비트집합의 생각에서 비교적 쉽게 실현할 수 있다.
for iset in range(1 << A):
# iset の i-th bit が立ってるかどうかでどうこうする
다른 한편\binom{m}{n}거리의 전체 탐색도 단순하지는 않지만, 착실하게 실시하면 어렵지 않다.나는 자신의 도서관을 실행하고 경기에서 이것을 복제한다.ans = 0
for p in binom(H * W, A): # binom{mn}{a}
for q in range(1 << A):
# 実際に置いてみて, 重なることのないことをチェック
if validate(p, q):
ans += 1
print(ans)
Reference
이 문제에 관하여(ABC 196/D - Hanjo), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/cympfh/articles/abc196-d-hanjo텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)