我一开始入队写的是:
while(q.size()&&i<lt[q.back()]&&w(q.back(),lt[q.back()])>=w(i,lt[q.back()])) q.pop_back();
结果WA了,我一看题解,题解是这么写的:
while(q.size()&&w(q.back(),lt[q.back()])>=w(i,lt[q.back()])) q.pop_back();
很容易发现,我多判了i<lt[q.back()],但如果不判,那么i就在lt[q.back()]后面,不能转移到lt[q.back()]。也就是说,可能会有不合法的转移,并且这个转移不一定比队尾劣,那这样的话,不合法的i就可能把合法的队尾踢出去。
难道这样不会有问题吗?求大佬解答
顺便at题解作者 @AThousandSuns