CodeForces-388C-Fox and Card Game-一分为二的博弈

本文解析了一款双人策略卡牌游戏,玩家Ciel和Jiro轮流取牌,目标最大化各自总分。关键在于理解两人如何平衡取牌策略,揭示了两人不可能跨越中间卡牌拿取的策略。通过计算和排序,最终给出了两人在理想情况下的得分。
摘要由CSDN通过智能技术生成

题目描述:

Fox Ciel is playing a card game with her friend Fox Jiro. There are n piles of cards on the table. And there is a positive integer on each card.

The players take turns and Ciel takes the first turn. In Ciel’s turn she takes a card from the top of any non-empty pile, and in Jiro’s turn he takes a card from the bottom of any non-empty pile. Each player wants to maximize the total sum of the cards he took. The game ends when all piles become empty.

Suppose Ciel and Jiro play optimally, what is the score of the game?

输入描述:

The first line contain an integer n (1 ≤ n ≤ 100). Each of the next n lines contains a description of the pile: the first integer in the line is si (1 ≤ si≤ 100) — the number of cards in the i-th pile; then follow si positive integers c1, c2, …, ck, …, csi (1 ≤ ck ≤ 1000) — the sequence of the numbers on the cards listed from top of the current pile to bottom of the pile.

输出描述:

Print two integers: the sum of Ciel’s cards and the sum of Jiro’s cards if they play optimally.

输入样例:

3
3 1 3 2
3 5 4 6
2 8 7

输出样例:

18 18

核心思想:

双方轮流拿,每次拿一个。
对于某一堆,如果某一个人要越过中间那一个去拿就意味着受到了权值大的卡牌的吸引。然而两人步长一样,那个权值大的卡牌会被另外一个人(离得近)先拿到,故得证两人无法越过中间线去拿卡牌。
对于某一堆,上一半的卡牌由Ciel拿到,下一半的卡牌由Jiro拿到,如果这一堆数量为奇数,则将正中间的一张牌加入数组b中。
最后将数组b排序,两人从大到小轮流拿牌。

代码如下:

#include<cstdio>
#include
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值