前几天做了一些题:
NOI2006 最大获利:
『其实最大权闭合图我是分类讨论出来的』
题意:每个点有代价,某些特定的两个点组合会产生一个收益,求最大收益、、、
一开始觉得是一个裸的最大流,但是显然不能知道怎么建出最大流的收益、、、
于是考虑逆向思维:看题解
看到最小割之后把网页关了『然后就做了个奇葩思路』。
考虑我已经获得了总的组合收益,现在有一些收益我不能获得,那么使得不能获得的收益最小即可。
我们对每个点向T连一条它的代价,对它们的组合收益这样连边:
如果选1而不选2,那么会丢掉组合收益,这样的话对应到割中就是1->2,选2而不选1,会丢掉组合收益,所以把S向1连一条边。两个都不选,会丢掉组合收益,但是注意到S已经和1连一条边了,也就是说我们不用再次连边了、、、
这个奇葩的连法就是这样、、、
经验:在收益问题上、、、如果能将方案对应到割、、、那么可以考虑最小割模型、、、
Topcoder 某个鲨鱼题:
题意:有一群鲨鱼,它们有长宽高,一条鲨鱼能被另一条鲨鱼吃掉当且仅当被吃的鲨鱼三围均小于另一条,然而一条鲨鱼最多吃两条鲨鱼。问最少剩几个鲨鱼。
考虑逆向思维:
考虑最少剩几条,就看它最多能被吃掉几条、、、
一开始考虑拆点给一条鲨鱼进行限制、、、
后来(问了神犇后)发现拆点是不对的、、、
想到一个显然的建图方法:
我们给每个鲨鱼一个能源为2,意思是它最多能吃两个鲨鱼,即:
S -> u :2
复制一排鲨鱼,并且连上能吃的鲨鱼,然后跑最大流、、、
经验:考虑逆向思维、、求什么东西最大,可以求另外相对应的最小、、、
vijos 1524(水)
一个迷宫,无向图,人在点1处,迷宫有许多出口,切断一条边的代价是它的长度、、、求不让人出去的最小代价、、、
我们考虑:
实际上这个图分为两个部分:
1.从1能到达的部分。
2.不能到达的部分。
将问题转化为割、、、
发现每个割都对应这一种方案、、、割边就是被看守住的边、、、
建图:
S就是点1,然后每条边按照原图走,注意无向边。
如果存成有向边意味着:
有些出口很可能箭头方向画反就不用看守、、、
实际上还是要看守的、、、
存成无向边即可、、、把出口和T连一个inf的边,意味着S中不能选出口、、、
经验:对于一个无向图、、、我们要仔细斟酌它的割边、、、因为割边是对应的容量、、、即去掉某条边的代价、、、
总之上述问题还是注意一下的好、、、
关于网络流的一些经验(一)
最新推荐文章于 2024-02-07 16:56:20 发布