摘要:
http://codeforces.com/contest/285/problem/E 询问有多少个长度为n的1~n的排列,有且仅有K个位置满足abs(p[i]-i)==1. 神级dp....表示比赛中我只想到了O(n^3)的dp,然后以为无效状态很多,加上cf神机 会给我祝福就直接写了,写完发现本地最大数据要跑5分钟=。=~。。真是太暴力了。。大致dp是这样的。。dp[i][j][k][msk]表示前i个位置,有且仅有j个满足上列条件的位置,且i+2~n之间的数字已经出现了k个,同时用msk一个2位2进制数表示数字i和数字i+1是否已经出现过。。。非常长的一个状态表示,当然转移很简单,按k个 阅读全文