长城守卫(Beijing Guards,CERC 2004,LA3177)

这是一个关于解决人们围成圈交换不同礼物的问题,确保相邻的人不会拿到相同的礼物。通过二分查找算法,确定最少需要多少种礼物来满足所有人的需求。题目描述包括输入输出格式,样例输入输出,并提供了解决方案和代码实现。
摘要由CSDN通过智能技术生成

AC通道:
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1178


长城守卫


Description

n 个人围成一个圈,其中第 i 个人想要有 ri 个不同的礼物。
相邻的两个人可以聊天,炫耀自己的礼物。

如果两个相邻的人拥有同一种礼物,则双方都会很不高兴。

问:一共需要多少种礼物才能满足所有人的需要?

假设每种礼物有无穷多个,不相邻的两个人不会一起聊天,所以即使拿到相同的礼物也没关系。

比如,一共有 5 个人,每个人都要一个礼物,则至少要 3 种礼物。
如果把这 3 种礼物编号为 123 ,则5个人拿到的礼物应分别是: 12123

如果每个人要两个礼物,则至少要 5 种礼物,且 5 个人拿到的礼物集合应该是:
{ 12}{ 34}{ 15}{ 23}{ 45}


Input

输入包含多组数据。每组数据的第一行为一个整数 n
以下 n 行按照圈上的顺序描述每个人的需求,其中每行为一个整数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值