首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
bzoj4078
】的更多相关文章
BZOJ4078 WF2014Metal Processing Plant(二分答案+2-SAT)
题面甚至没给范围,由数据可得n<=200.容易想到二分答案,暴力枚举某集合的价值,2-SATcheck一下即可.这样是O(n4logn)的. 2-SAT复杂度已经是下界,考虑如何优化枚举.稍微改一下,不妨从大到小枚举较大的集合价值(即枚举边),另一个集合二分答案,同样O(n4logn). 看起来没什么卵用.但注意到较大集合所不能包含的边不可以成奇环,否则肯定有一条环上边被选中.那么考虑当前边,如果形成奇环,最大值不可能比它更小了,做完这个就可以退出:如果加上这条边后形成偶环,可以直接跳过,因为如…
BZOJ4078 : [Wf2014]Metal Processing Plant
设$D(A)\leq D(B)$,从小到大枚举$D(A)$,双指针从大到小枚举$D(B)$. 那么对于权值不超过$D(A)$的边,可以忽略. 对于权值介于$(D(A),D(B)]$之间的边,需要满足那两个点不能都在集合$A$. 对于权值大于$D(B)$的边,需要满足那两个点不在同一个集合. 所以建图判断2-SAT是否有解即可,这可以使用压位Kosaraju算法. 时间复杂度$O(\frac{n^4}{64})$. #include<cstdio> #include<algorithm&g…
bzoj4078
二分+2-sat 枚举第一个权值,二分第二个权值,然后2-sat检查,当第一个权值已经不能形成二分图时,再往下没意义,因为没法分成两个点集.(双指针好像跑得慢) #include<bits/stdc++.h> using namespace std; ; struct edge { int u, v, w; edge(, , ) : u(u), v(v), w(w) {} bool friend operator < (edge A, edge B) { return A.w >…