Shiritori
[ABC278F] Shiritori
首先想到单词只跟首尾有关,就只需要记录首尾了。
然后就想到了直接爆搜。
爆搜
发现赛时的数据水爆了,被赛后的数据卡了。
然后我考虑到可以用二进制表示 st
,这样就可以避免掉枚举 \(1\sim n\),而只是枚举未选择的。
优化1
容易发现,极限数据加速了很多,但是还是过不去。
此时既然用了二进制状态,又有了上次结束的字母,那可以想到什么?
状态压缩!令 \(f[lst][state]\) 表示上个字母是 \(lst\),状态是 \(state\)(每一位的 \(1\) 表示未选,\(0\) 表示已选)。
状态数只有 \(26(2^N-1)\),完全可以过。
AC
发现优化力度还是相当大的。