摘要: 正解2-SAT。我用DLX想搜一搜的,结果TLE了……没什么遗憾,最起码我尝试过了。扔个代码留作纪念。#include #include #include #include #include using namespace std;const int INF = 1 N ) return false; if ( R[head] == head ) { if ( cur == N ) return true; return false; } minv = INF; for ( i = R[head]; i != h... 阅读全文
posted @ 2013-08-19 22:28 冰鸮 阅读(352) 评论(0) 推荐(0)
摘要: 虽然看起来是求最短路,但因为条件的限制,可以转化为区间求最小值。对于一条small path [a, b],假设它的长度是len,它对区间[a, b]的影响就是:len-( sum[b]-sum[a-1] );(使区间[a,b]的原有长度变长或者变短,变长没有意义,所以我们只考虑变短的情况),因为只能选择一条small path,所以对于每个查询[u, v],就是要选择在区间[u, v]内,让原有长度减少最多的那条small path,即求区间最小值。离线处理:将查询和small path放在一起排序,按u从大到小,v从小到大排。因为我们要从后往前扫,对于每个查询[u, v],我们应当保证在本 阅读全文
posted @ 2013-08-19 22:04 冰鸮 阅读(314) 评论(0) 推荐(0)