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,网上很多版本是跑两次,其实可以运用费用流的最短路进行边权控制,使得一些边在后面才可以跑到。详细来说,就是根据规则连边,然后考虑对方牌组为空的情况,显然要把每一张己方牌考虑进来,于是乎这里出现了边权控制,将边权置大,到后面跑到再减回来。并且注意,只有到达满流(敌方牌组为空)之后,才有可能有这种情况。

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

  • 相关阅读:
    收藏转载:一些视频流地址
    转载收藏:Android 输入法表情上传服务器
    Android N 的开机启动流程概述
    列举至少3种Support包中提供的布局或工具
    代码混淆定义
    应用内存优化主要思路
    锁屏的一些动画
    毛玻璃效果
    关于宏定义
    openresty性能测试报告分析
  • 原文地址:https://www.cnblogs.com/FormerAutumn/p/10584798.html
Copyright © 2011-2022 走看看