[dfs][dp] Jzoj P4406 拔河
Description 有 2n 个人玩拔河,拔河的绳子由左右两段组成,每段绳子上有 n 个位置,第 i 个人可以在左边绳子的 li 位置处,也可以在右边绳子的 ri 位置处。每个位置上有且仅有一个人。每个人有一个实力值 si ,问对于每一种合法方案两边实力值和之差的绝对值最小是多少,如果无解输出 -1 。 Input 第1行一个整数 n。 第2 ~ 2n+1行,每行三个整数li, ri, si Output 一个整数表示所求的答案 Sample Input 6 1 4 12 6 1 3 2 4 5 3 1 13 2 6 15 4 2 8 5 6 9 5 2 14 3 3 5 6 5 10 4 5 15 1 3 13 Sample Output 6 Data Constraint 30%:1 <= n <= 10 70%:1 <= n <= 103 100%:1 <= n <= 3 * 104, 1 <= si <= 15 题解 我们可以将l[i]和r[i]+n连一条边,然后我们发现这就是一个二分图 然后因为每个点都要有一个人,如果一个点度数为0,那么显然要输出-1 如果度数只有1的话,这个点是绝对确定的 那么对于剩下的点,度数都为2,会形成若干偶环 对于每一个偶环,只会有两个种取值方式,顺着走或逆着走,就会产生两个权值,a和b 然后,可以把|a-b|当成一个物品来做背包问题