[NOI2017]游戏(2-SAT)

题目链接

观察到d<=8,考虑对每个x用a/b/c代替,枚举的复杂度\(O(3^n),O_{\max}=3561\)

此时就基本上变成一个裸2-sat了,注意一些小细节

为什么是2-Sat了,因为比如a,b,c三种车子你限制不能用b了那a,c就相当于2-Sat中的真假两种状态了,这时我们暂且称b=\(\neg\)c,c=\(\neg\)b

那么对于每一条要求i a j b

  1. 如果i a不行,continue
  2. 如果j b不行,那相当于你一旦i a了就无解了,就是i不能a,我们巧妙地从(i,a)连到\((i,\neg a)\),也就是一选(i,a)就一发不可收拾了
  3. 都可以的情况下,连\((i,a)\to (j,b)\)\((j,\neg b)\to (i,\neg a)\),不赘述

求一遍标准2-sat就完了

总复杂度在一般情况下远\(<O(3^n n)\),Omax≈3e8

AC记录

注:其实x只要枚举填a还是b就可以了,因为不适合A就是适合赛车BC,不适合B就是适合赛车AC,这样情况就都覆盖了。复杂度降到 \(O(2^nn)\)

posted @ 2021-09-15 17:28  pengyule  阅读(42)  评论(0)    收藏  举报