牛客练习赛106 原创 ¥ Rated B题


 

题目描述

牛牛有 n 个属性,第 i 个属性的初始值为 ai​ ,牛牛想把第 i个属性的值变为目标值 bi。

现在牛牛 2×n 种不同颜色的药丸(每种药丸都有无穷多个),吃一个药丸会产生一个效果。同种颜色的药丸效果相同,不同颜色的药丸效果不同。

每种颜色的药丸对应以下效果之一:

* 第 1 个属性值 + 1
* 第 1 个属性值 - 1
* 第 2 个属性值 + 1
* 第 2 个属性值 - 1
* ......
* 第 n 个属性值 + 1
* 第 n 个属性值 - 1

以上描述了 2×n 种效果,它们与 2×n种颜色的药丸一一对应。

开始时牛牛并不知道药丸颜色与药丸效果的对应关系。若牛牛吃一个药丸,则会获得该颜色药丸对应的效果,并且知道该颜色的药丸对应的效果。

牛牛通过吃药丸来改变自己的属性值。求在最坏的情况下,牛牛要吃多少药丸才能将所有属性从初始值变为目标值。

(若初始时初始值均等于目标值,则不需要吃药丸,输出 0)

输入描述:

第一行输入一个正整数 1≤n≤10^5,表示牛牛的属性数量。

接下来一行 n 个整数,第 i 个整数 −10^9≤ai≤10^9,−10^9≤ai​≤10^9 表示牛牛第 i 个属性的初始值。

接下来一行 n个整数,第 i 个整数 −10^9≤bi≤10^9,−10^9≤bi​≤10^9 表示牛牛第 i 个属性的目标值。

输出描述:

输出一个整数 m,表示在最坏的情况下,牛牛要吃多少药丸才能将所有属性从初始值变为目标值。

示例1

输入

2
1 3
1 4

输出

5

说明

在样例中,牛牛有 2 个属性值分别为 1 3,目标值分别为 1 4。

在最坏情况下:

牛牛吃的第一个胶囊使得其第一个属性值下降 1,牛牛的属性值变为:0 3。此时牛牛肯定不会再吃该颜色的药丸了。

牛牛吃的第二个胶囊使得其第二个属性值下降 1,牛牛的属性值变为:0 2。此时牛牛肯定不会再吃该颜色的药丸了。

牛牛吃的第三个胶囊使得其第一个属性值增加 1,牛牛的属性值变为:1 2。牛牛的第一个属性值以及足够,此时牛牛肯定不会再吃该颜色的药丸了。

牛牛吃的第四个胶囊使得其第二个属性值增加 1,牛牛的属性值变为:1 3。

此时牛牛可以再吃一个同上颜色的药丸,使得其第二个属性值增加 1,变为 4。

共需要 5 个药丸。

示例2

输入

3
1 1 4
5 1 4

输出

10

假设每个都是最坏的情况,与原先要达到的数值背离,再加一个等于0时候的特判,还有记得开longlong

#include<bits/stdc++.h>
using namespace std;
int a[100010],b[100010];
int main()
{
	int n;
	cin >> n;
	for(int i=1;i<=n;i++)
	{
		cin >> a[i];
	}
	for(int i=1;i<=n;i++)
	{
		cin >> b[i];
	}
	bool flag=true;
	for(int i=1;i<=n;i++)
	{
		if(a[i]!=b[i])
		flag=false;
	}
	if(flag==false)
	{
	 long long sum=0;
	 for(int i=1;i<=n;i++)
	 {
		sum+=abs(a[i]-b[i])+2;
	 }
	 cout<<sum;
	}
	else
	cout<<0;
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值