足球战术->声东击西之bridge篇

博客介绍运用bridge模式实现训练和比赛分离,提高可扩充性且实现细节对客户透明。给出了训练球队、比赛球队的类代码,还展示了扩展训练球队和扩展比赛球队的类代码,体现了该模式在球队场景中的应用。

接上回:

http://www.youkuaiyun.com/develop/read_article.asp?id=11224

训练时公布给外界的是一套,而
正式比赛时是另外一套,所谓是
声东击西,可以运用bridge模式。
好处是训练和比赛分离,提高各自
的可扩充性,而且实现细节对客户
(外界)透明:)
代码如下:
class 训练球队{
public:
    训练球队();
    virtual void 加强左路进攻();
    virtual void 加强右路进攻();
protected:
    比赛球队* 得到比赛球队();
private:
    比赛球队* _实现;
};

class 比赛球队{
public:
    virtual void 加强左路进攻();
    virtual void 加强右路进攻();
protected:
    比赛球队();
};

class 扩展训练球队:public 训练球队{
public:
    //...
    virtual void 佯攻左路,实攻右路();
private:
    const char* _右路队员号码;
};

class 扩展比赛球队:public 比赛球队{
public:
   扩展比赛球队();
   virtual void  佯攻右路,实攻左路();
   //...
private:
    const char* _左路队员号码;  
};

题目描述 33DAI 和 Kitten 正在玩一款游戏。游戏中有 n n 个城市( n > 1 n>1),从左到右编号从 1 ∼ n 1∼n,编号为 i i 的城市有 a i a i ​ 的资源。 Kitten 可以任选一个城市开始实行声东击西战略,假设她选择城市 x x。那么 33DAI 就会警觉并前往城市 x x。这需要花费 33DAI x x 分钟的时间。33DAI 到达后就会封锁城市 x x 使得不能从 x − 1 x−1 走到 x x,也不能从 x + 1 x+1 走到 x x。如果此时 Kitten 就在城市 x x,那么 Kitten 就会直接输掉游戏。 Kitten 每分钟可以选择待在原地或者走到左边或者右边的城市(即从城市 i i 走到城市 i + 1 i+1 或 i − 1 i−1)。 请你帮 Kitten 决定起始城市及每分钟的移动策略,来不输掉游戏,并最大化她到过的城市资源之和。 输入格式 第一行为一个数 n n。 第二行为 n n 个整数 a 1 ∼ a n a 1 ​ ∼a n ​ 。 输出格式 一个整数,即她到过的城市资源之和的最大值。 输入数据 1 2 -5 2 输出数据 1 -3 Kitten 可以选择在城市 1 声东击西,发动后 1 1 分钟 33DAI 会到,此时 Kitten 可以前往城市 2,并停在城市 2。 Kitten 可以选择在城市 2 声东击西,发动后 2 2 分钟 33DAI 会到,此时 Kitten 可以前往城市 1,并停在城市 1。 显然得分一样。 输入数据 2 10 2 2 -100 2 2 2 2 2 2 2 输出数据 2 14 可以从城市 8 声东击西,这样第 8 8 分钟才会封锁城市 8 8。发动后可以按照 8->9->10->9->8->7->6->5->4 的路径走,路途中没有被封锁。 输入数据 3 6 -1000 100 -1000 -10 90 -10 输出数据 3 80 可以在城市 6 发动声东击西,然后前往城市 5 待着不动。 数据规模与约定 对于 100 % 100% 的数据, 2 ≤ n ≤ 1 0 6 2≤n≤10 6 , − 1 0 9 ≤ a i ≤ 1 0 9 −10 9 ≤a i ​ ≤10 9 。 子任务 1(10 分):保证 n = 2 n=2。 子任务 2(20 分):保证 a i > = 0 a i ​ >=0。 子任务 3(30 分):保证 n = 100 n=100。 子任务 4(40 分):没有特殊限制。C++
07-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值