Id1086
Title袁源与苹果(三)
Tagsbitmasks
dfs
search
Brief solution首先用位操作的技巧表示集合,然后将所有条件转换为left<right或left=right。接着开始dfs,在dfs的第一层中为对应字母赋一个值。在为当前层对应的字母赋值后,检测是不是能满足所有的条件。对于每个条件,首先计算出来左边和右边已经赋值的变量的和,然后还可以计算出来分别剩下多少个变量没有赋值。如果左边已经赋值的大于右边的,则不可满足。如果条件是<,那么左边的可能的最小值>=右边可能的最大值,则不满足。如果条件是=,那么左边可能的最大值<右边可能的最小值则不可满足。对于没有用过的值,从小到大排序,求出所有前缀和,那么对于某一边,可能的最小值就用这边还没有赋值的变量赋上最小的若干个值。对于可能的最大的值同理。
time usage:0.790320