题解 P3921 【小学数学题】

oscar

2017-09-09 12:57:45

Solution

解法0: 学习⑨,输出-1 0 期望得分:0分 解法0.5: 输出1 1 期望得分:10分 解法1: 将所有人的位置作为状态,建出图来暴力BFS+DP 加入状态压缩优化常数 条件1等价于状态i中i&((1<<(a-1))|(1<<(b-1)))==0或i&((1<<(a-1))|(1<<(b-1)))==((1<<(a-1))|(1<<(b-1))) 条件2可以进行类似的转化 不要忘记考虑条件2中b==c的情况 时间复杂度O(2^(2\*n)) 期望得分:30~70分(取决于常数) 解法2: 优化建图 新建节点(i,j,k)表示与状态i 后j位完全相同 且 剩余位置上差异恰有k位 从(i,j,k)向(i,j-1,k)和(i^(1<<(j-1)),j-1,k+1)连一条权值为0的边 再从(i,0,k)向(i,n,0)连一条权值为1的边(0<=k<=r) 最后从((1<<n)-1,0,k)向T连一条权值为0的边(0<=k<=r) 再在新图上跑BFS+DP 时间复杂度O((n^2)\*(2^n)) 期望得分90~100分(取决于常数) 有一点细节,DP的时候需要当做所有边权值为1跑,否则答案会出问题(更新顺序不对) 呜呜呜~~~比赛时被解法1水过了(90分),很不开心QAQ 不给标程啦