原题
题目大意
有n首歌可以在上午放或下午放,但只能放一次,每个评委有两个要求,满足其中任意一个,评委就会满意,问能否使所有评委都满意。
分析
因为只要满足任意一个要求,就能满足,所以这两个要求之间的关系为OR。又因为每个评委都要满意,所以评委之间的关系为AND,问题就转为是否能让表达式为真。不妨将歌在上午放记为x,将歌在下午放记为~x,这样表达式就能写出了。接下考虑如何寻找表达式的解。
可以将这个问题转化为一个图论的问题。a OR b可以转变为~a->b AND ~b->a,将每首歌拆成两个点,一个代表a,另一个代表~a,根据关系连有向边。例如上面的例子,应该从~a连向b,和从~b连向a,这样就构成了一张有向图。只要任意一个点拆出的两个点都不在同一个联通块中,就代表能使所有评委满意。
参考代码
|
|