题意:
二维平面上有n个浮冰(用坐标表示浮冰位置),开始时每个浮冰上有一些企鹅,现在企鹅需要聚到某一个浮冰上,因此需要从一个浮冰跳到另一个浮冰上。浮冰比较特殊,每次企鹅跳离该浮冰时,由于反弹作用,浮冰会消融一部分,现在告诉,每块浮冰的坐标(xi,yi),每块浮冰最多可以被企鹅跳的次数(ni),每块浮冰上初始的企鹅数量(mi)以及企鹅可以跳跃的最大距离D。求这些企鹅最后可以在哪些浮冰上汇聚。输出可以汇聚的浮冰序号,下标从0..n-1,如果不能汇聚,输出-1。
题解:
枚举汇聚的那块浮冰为T,最大流求解。
关键是怎样限制点的出度数(浮冰会融化!),以前好像谈到过,就是拆点。
拆成2n个点(i和(i+n)对应),若u到v有边,则从u向(v+n)连一条容量1的边,从u向(u+n)连一条容量为INF的边,从S向i(1<=i<=n)连容量为i号冰上的企鹅数目的边。
这样就可以达到限制度的效果了~
我又偷懒了,有没有自己打。。。思考最重要!
这位同学的sap好快啊。。ps:其实我同学的dinic跑了400ms