2-SAT好题
题意
题目中给定n个字符串,m个字符,现在将这些字符用数字来表示。
现在可以将这些数字中的任意几个变成大写,(字符变成大写后小于任何小写的字符,但是两个大写字符按数值进行比较)
使得:
在变换后,按顺序给定的n个字符串是按字典序升序排列的。
分析
每个字符只有小写大写两种状态,可以转换成2-SAT问题。
暴力拆点,第i个点表示i取大写,i+n表示i取小写
由于是升序,所以我们只要处理前后两个字符串,对于每一位:
1.如果当前这一位大于前一个串的这位
那么前面串的这位大写,后面的大写小写都可以,如果后面的大写,前面的就必须大写
2.如果当前这一位小于前一个串的这位
那么前面串的这位必须大写,后面串必须小写
还有就是要特判全部一样但前一个串的长度大
连边就和2-SAT没什么区别了。
1 |
|