总结.

在这里插入图片描述
在这里插入图片描述
题解:脑筋急转弯,好好想想思路就出来了m等于1时,差值为0;m等于2时两个数相减绝对值等于自身;大于2时绝对值最大为2倍

#include<iostream>
#include<algorithm>
#include<list>
#include<cstdio>
#include<cstring>
#include<iomanip>
using namespace std;
int main()
{
	int T;
	cin >> T;
	while (T--)
	{
		int m, n;
		cin >> m >> n;
		if (m == 1)
			cout << 0 << endl;
		if (m == 2)
			cout << n << endl;
		if (m > 2)
			cout << 2 * n << endl;
	}
}

在这里插入图片描述
在这里插入图片描述
题解:求第一个数组相加的最大值,k是最多可以从第二个数组中换的数字个数,先排序挨个从第二个数组中取最大的换第一个数组中最小的数字即可。

#include<iostream>
#include<algorithm>
#include<list>
#include<cstdio>
#include<cstring>
#include<iomanip>
using namespace std;
int a[35], b[35];
int main()
{
	int T;
	cin >> T;
	while (T--)
	{
		int n, k;
		cin >> n >> k;
		for (int i = 0; i < n; i++)
			cin >> a[i];
		for (int i = 0; i < n; i++)
			cin >> b[i];
		sort(a, a + n);
		sort(b, b + n);
		int j = n - 1;
		int sum = 0;
		for (int i = 0; i < n; i++)
		{
			if (sum == k)
				break;
			if (a[i] < b[j])
			{
				a[i] = b[j];
				j--;
				sum++;
			}
		}
		int ans = 0;
		for (int i = 0; i < n; i++)
		{
			ans += a[i];
		}
		cout << ans << endl;
	}
}

总结:
多做题有所收获了,rnak曲线开始平稳了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值