【usaco 2013 Mar Silver】扑克牌(Poker Hands)

本文介绍了如何解决USACO比赛中关于扑克牌游戏的问题,通过模拟递推算法求解最少出牌次数。首先分析了暴力解法的思路,然后提出了AC算法,即利用递推公式,每次减去前一个数的和,以达到最小出牌次数。样例输入和输出展示了算法的有效性。
摘要由CSDN通过智能技术生成

比赛的T1,也不知道自己怎么想的直接上了暴力。其实朴素算法很简单,直接模拟递推即可。

题目描述
题目:

奶牛贝里斯和他的朋友最近正在玩一种特殊的扑克牌游戏。这种扑克牌不同大小的牌有N种,从1到N编号(一般的牌只有13种大小,除了大王和小王)。在这个游戏中,只有一种出牌方式,每次出牌,选择任意一个出牌区间,例如[i…j],那么就从i到j每种大小的牌各出一张。

问题描述:

给定贝里斯手中的每种大小的牌的数量。请帮助贝里斯计算最少要出多少次牌才能将他手中的牌出完。

输入
第一行一个正整数N,表示扑克牌的种类。

接下来第2行到第N+1行,第i+1行的非负整数ai表示大小为i的牌有ai张。

输出
输出将所有的牌出完最少需要的次数。

样例输入
5

2

4

1

2

3

样例输出
6

数据范围限制
数据范围:1<=N<=100000,0<=ai<=100000。

提示
说明:样例中,我们从1到5出一次,1到2出一次,4到5出一次,2到2出两次,5到5出一次,所以总共需要的次数是:1+1+1+2+1=6。

暴力思路还是很好想的,直接上开始分割。每次找到区间的最小值,再把区间所有的值减去最小值,再依照最小值的左和右继续分割。
得出这种算法的依据是贪心,我们可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值