zoukankan      html  css  js  c++  java
  • CF_321_B_NetFlow

    CF_321_B

    题面:据说题目描述是游戏王的规则,然而我并没有玩过。大概意思就是我方有m张攻击牌,敌方有n张牌(防御,攻击都有),如果一回合我方选择攻击牌(X)攻击敌方防守牌(Y)且$Vval_X > Val_Y$,那么可以打掉敌方该牌但没有伤害,如果是攻击打攻击,除了打掉敌方牌之外,还可以获得$Damge = Val_X - Val_Y$。此外,如果敌方已经无牌,我方选择牌(X),则直接获得$Val_X$的伤害,我方可以选择随时结束游戏,求造成的最大伤害值。

    题解:既然选的是flows专题,那肯定是flows,个人感觉可以贪心,但是由于练习flows,就用flows写了,后来贪心想了半天,想不出来,至于flows,网上很多版本是跑两次,其实可以运用费用流的最短路进行边权控制,使得一些边在后面才可以跑到。详细来说,就是根据规则连边,然后考虑对方牌组为空的情况,显然要把每一张己方牌考虑进来,于是乎这里出现了边权控制,将边权置大,到后面跑到再减回来。并且注意,只有到达满流(敌方牌组为空)之后,才有可能有这种情况。

    代码学习,就是从这位博主那里学习到了费用控制,一开始自己对于敌方牌组为空的处理并不能跑出答案,因为没有考虑到这是满流之后的情况。

  • 相关阅读:
    Boliuraque OI 总结
    HNU 1447 最长上升路径
    妹纸
    某个子串的循环节
    跳石头
    小澳的葫芦
    递推式的循环问题
    BZOJ 2326 数学作业
    BZOJ 2337 XOR和路径
    hdu5468 Puzzled Elena
  • 原文地址:https://www.cnblogs.com/FormerAutumn/p/10584798.html
Copyright © 2011-2022 走看看