标签:否则 sdoi inf 假设 lin math chef span 它的
一个和标算不同的方法。
考虑二元关系网络流(最小割)。
根据sdoi墙上的句子的经验,把每个网格上的点拆成两个,代表黑/白点。
给当前位置\((x,y)\)新建两个点\(a,b\)。
a归到s->\((x,y)\)选白色
a归到t->\((x,y)\)选黑色
b归到s->\((x,y)\)选黑色
b归到t->\((x,y)\)选白色
考虑a->b连inf,这样子可以保证a,b不能同时选。
s->a连接流量为\(a\)格子的代价,b->t连接流量为\(b\)格子代价
如果限制格子\((x,y)\)为黑色,则\(s\to a\)不连边。
如果限制格子\((x,y)\)为白色,则\(b\to t\)不连边。
考虑矩形的限制。
把每个矩形新建两个点\(c,d\)。
如果我们为一个格子\((x,y)\)赋值。
假设当前格子是白色,则包含它的黑矩形都不能选。
假设当前格子是黑色,则包含它的白矩形都不能选。
s->c,d->t连代价的边。
根据前面的经验,\((x,y)\)对应的点\(a,b\),d->b连inf,a->c连inf。
发现这样子跑出来的是“最小要减少的代价”
设变量\(ans\),初始为\(0\)。
考虑每个格子,如果它必须是黑色,则ans+=它为黑色时的代价。
如果它必须是白色,则ans+=它为白色时的代价。
否则ans+=它为白色时的代价+它为黑色时的代价
ans-最小割就是答案。
标签:否则 sdoi inf 假设 lin math chef span 它的
原文地址:https://www.cnblogs.com/ctmlpfs/p/14390907.html