51nod1621-花钱买车牌
来源:互联网 发布:网络虚假信息 编辑:程序博客网 时间:2024/05/01 08:51
一个车牌号由n位数字组成。如果一个车牌至少有k位数字是相同的,那么我们就说这个车牌漂亮的车牌。现在华沙想要改变他自己的车牌,使得他的车牌变得漂亮。当然,改车牌是要花钱的。每改变一位数字所要花费的费用等于当前位上的新旧数字之差的绝对值。那么总费用就是每位上所花费用的总和。
举例如下,
旧牌为0123,新牌为7765,那么对应第一位所花费用为|0-7|=7,第二位为|1-7|=6,第三位为|2-6|=4,第四位为|3-5|=2,总和为7+6+4+2=19
华沙想用最少的钱,使他的车牌变得漂亮起来。现在给定n,k,和旧牌的号码,计算换牌的最少费,以及新牌的号码,
如果最少费用的号码有多个,我们取字典序最小的那个。
样例解释:
在样例中,把第二个数字换成“8”花费|9-8|=1,把第五个数字换成“8”也花了1。
把第六个数字换成“8”花费|6-8|=2.总费用为1+1+2=4,新号码为“888188”
两个长度为n的序列比较方法如下。
存在两个序列x,y,长度都是n。
如果存在i(1≤i≤n)和任意j(1≤j<i)使得
Input
单组测试数据第一行,两个由空格隔开的数字n和k(2≤n≤10^4,2≤k≤n),表示旧牌的位数,和至少要有k位数字相同才能构成漂亮的车牌。第二行有n位数字,代表华沙的旧车牌。(旧车牌中只有数字)。
Output
共两行,第一行,一个整数,代表换牌的最小费用,第二行,n位数字,表示新的车牌。如果最小费用的车牌有多个,输出字典序最小的那个。
Input示例
6 5898196
Output示例
4888188
解题思路:我们可以枚举0-9这些数字,得到每个数字的最小值,最后得到最小值就可以了。
ac代码:
#include<bits/stdc++.h>using namespace std;int main(){int n,k,p,c,res=1e9;string s,t,ans;cin>>n>>k>>s;for (int i=0;i<10;i++){t=s,p=k,c=0;for (int j=0;j<10;j++){for (int l=0;l<n;l++)if (p && t[l]-48==i+j)p--,t[l]=i+48,c+=j;if (j)for (int l=n-1;l>=0;l--)if (p&& t[l]-48==i-j)p--,t[l]=i+48,c+=j;}if (c<res) res=c,ans=t;if (c==res) ans=min(ans,t);}cout<<res<<endl<<ans;}
阅读全文
0 0
- 51nod1621-花钱买车牌
- 51nod1621-贪心&枚举&好题&cf-花钱买车牌
- 51nod 1621 花钱买车牌 (贪心)
- 51Nod-1621-花钱买车牌
- 51nod 1621 花钱买车牌
- 51nod 1621花钱买车牌(贪心)
- 今天花钱买书了
- 我又花钱买书了..
- 多少IT人愿意花钱买经验?
- 李开复回应质疑:傻瓜才花钱买没有价值流量
- 中国用户不肯花钱买App,开发者该怎么办?
- 肯德基问题鸡再出隐患:花钱能买检疫证
- 动态规划--买书怎么组合花钱最少
- 花钱买快乐 文 / 弗雷德里.美娜德
- 如何勾引马云、马化腾花钱买你公司?
- 邬贺铨:工业物联网靠花钱是买不到的!
- 花钱
- 花钱
- Markdown基本使用
- RecyclerView
- XML学习03-DTD约束
- java递归遍历复制文件夹
- 使用泛型创建简单内部链式存储机制
- 51nod1621-花钱买车牌
- Java的八种基本类型:(按字节来分)
- asp.net MVC 应用程序的生命周期
- 向小米学习营销
- WPF使用Image控件图片无法显示的解决方法
- 关于layer弹出框出现layer is not underfined的问题
- eclipse修改黑色背景
- java中String对象是一个引用对象
- 如何屏蔽iframe中内容的右键菜单