华师一附中OI组

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1855|回复: 1
打印 上一主题 下一主题

2760: 完美的序列(sequence)

[复制链接]

738

主题

1485

帖子

5422

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5422
跳转到指定楼层
楼主
发表于 2021-10-29 08:32:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
题目描述
LYK认为一个完美的序列要满足这样的条件:对于任意两个位置上的数都不相同。然而并不是所有的序列都满足这样的条件。
于是LYK想将序列上的每一个元素都增加一些数字(当然也可以选择不增加),使得整个序列变成美妙的序列。
具体地,LYK可以花费1点代价将第i个位置上的数增加1,现在LYK想花费最小的代价使得将这个序列变成完美的序列。

输入格式(sequence.in)
第一行一个数n,表示数字个数。
接下来一行n个数ai表示LYK得到的序列。

输出格式(sequence.out)
一个数表示变成完美的序列的最小代价。

输入样例

4
1 1 3 2

输出样例
3

数据范围
对于30%的数据n<=5。
对于60%的数据n<=1000。
对于80%的数据n<=30000,ai<=3000。
对于100%的数据n<=100000,1<=ai<=100000。

回复

使用道具 举报

738

主题

1485

帖子

5422

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5422
沙发
 楼主| 发表于 2021-10-29 08:44:15 | 只看该作者
最笨的做法显然是枚举每个数增加几次,显然每个数增加的次数不超过n。比如样例1132,
第一是数是1,前面没有,可以保留;
第二是数是2,前面有,必须改,改成多少呢?先试试改成2吧!也可以改成后面第一个没有的4,这个作为第二种方法等下验算。
第三是数是3,前面没有,可以保留;
第四数是2,前面有,只能改成4。
至此全部改完,费用是1+2=3。
若按第二种方法把第二个数直接改成4,那么代价也是3。
这种方法是不是证确的方法呢?

对于此样例,最后成型的数组一定是1234,总和是10,原始数据是1132总和是7,怎么改都要增加3,不管是改一个还是改3个。所以不影响答案。
然后我们发现,数的位置也不影响答案,所以我们可以先排序,这样就更方便。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|服务支持:DZ动力|华师一附中OI组  

GMT+8, 2024-12-26 12:51 , Processed in 0.096553 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表