8개의 댓글이 있습니다.
-
-
WeissBlume -
현재 점화식 정의에서 상태를 나타내는 변수를 늘리면 더 쉽게 해결 가능합니다.
d[i][j][k][l] : i를 행번호, j를 열번호, k를 각 열이 뒤집어진 상태인가, l을 현재 행을 뒤집는 중인가(연속적으로 뒤집을 수 있으니까).
이렇게 정의하면 현재 (행,열)위치에서만 뒤집어보면 되니까 시간 안에 충분히 수행되겠죠!
11년 전 link
-
-
정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.

restart
[[problem: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..2C$
$\And$ = 비트AND, $ \oplus $ = 비트XOR
인데요... 1차원의 행변환의 해를 구하는 linear는 미리 계산해 둬서 O(1)이라 해도 시간복잡도가 $O(R2{2C})$라 답이 없더라구요...ㅠㅠ
부족한 제게 가르침을 부탁합니다.. dp는 너무 형태가 다양하네요..ㅠㅠ
11년 전