8개의 댓글이 있습니다.
-
-
WeissBlume -
현재 점화식 정의에서 상태를 나타내는 변수를 늘리면 더 쉽게 해결 가능합니다.
d[i][j][k][l] : i를 행번호, j를 열번호, k를 각 열이 뒤집어진 상태인가, l을 현재 행을 뒤집는 중인가(연속적으로 뒤집을 수 있으니까).
이렇게 정의하면 현재 (행,열)위치에서만 뒤집어보면 되니까 시간 안에 충분히 수행되겠죠!
9년 전 link
-
-
정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
restart
TURNOFFTHELIGHTS를 풀고 있는데요, 사흘간 자나깨나 기회될때마다 관계식을 떠올리려 노력해도 도저히 나오질 않네요.. 다른 문제도 손에 잡히질 않고 입맛도 떨어지고 고민만 늘어가는 중.. 도저히 안되겠다 싶어서 도움의 손길을 청합니다.ㅠㅠ
지금까지 제가 생각했던 건
dp(i,j)=i를 행번호, j를 각행이 열변환되었는지 비트별로 나타낸다고 할 때(0110_2 : 1열, 2열이 열변환되었음), i행을 j열변환시키면서 [0..i]행을 모두 0으로 만드는 최소 가짓수라 정의하고
dp[i][j]=min(dp[i-1][k]+bitcnt(j-k \And j)+linear[row_i \oplus j]), k=0..2^C
\And = 비트AND, \oplus = 비트XOR
인데요... 1차원의 행변환의 해를 구하는 linear는 미리 계산해 둬서 O(1)이라 해도 시간복잡도가 O(R2^{2C})라 답이 없더라구요...ㅠㅠ
부족한 제게 가르침을 부탁합니다.. dp는 너무 형태가 다양하네요..ㅠㅠ
9년 전