正解\TEXTIT{\TEXTBF 正解}正解:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
洛谷题目传送器
拿出的书可以放在任意位置, 所以可以先放在一边, 到最后处理。
设 F[i,j,k,s]F[i,j,k,s]F[i,j,k,s],即表示处理到第 iii 本书,拿出了 jjj 本书,书架上最后一本书高度为 kkk,书架上的书高度状态为 sss 时的混乱值。
策略有两个:
1. 将 iii 拿出,F[i,j,k,s]=min(F[i−1,j−1,,k,s])F[i,j,k,s]= \min (F[i-1,j-1,,k,s])F[i,j,k,s]=min(F[i−1,j−1,,k,s])。
2. 不将 iii 拿出, F[i,j,k,s]=min(F[i−1.j,p,s⊕(1<<hi−1)]+[p≠k])F[i,j,k,s]= \min (F[i-1.j,p,s \oplus (1<<h_i-1)]+[p \ne k])F[i,j,k,s]=min(F[i−1.j,p,s⊕(1<<hi −1)]+[p=k])。
再考虑统计答案, Answer=min(F[N,0→K,k,s]+cnt[s⊕U])Answer=\min (F[N,0 \to K,k,s]+ cnt [s \oplus U])Answer=min(F[N,0→K,k,s]+cnt[s⊕U])。
其中 cnt[x]cnt[x]cnt[x] 表示 xxx 二进制 111 的个数。
按以上方式更新状态时间复杂度 O(N2∗K∗28)O(N^2*K*2^8)O(N2∗K∗28) ,但若使用状态去更新状态, 时间复杂度 O(N∗K2∗29)O(N*K^2*2^9)O(N∗K2∗29) 。
CODE:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------