2021.7.19提高B组模拟7T3 只不过是长的领带(贪心)

Posted SSL_LKJ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021.7.19提高B组模拟7T3 只不过是长的领带(贪心)相关的知识,希望对你有一定的参考价值。

只不过是长的领带

题目大意

在这里插入图片描述

输入样例

在这里插入图片描述

1.

3
4 3 7 6
2 6 4

2.

5
4 7 9 10 11 12
3 5 7 9 11

输出样例

在这里插入图片描述

1.

2 2 1 1

在这里插入图片描述

2.

4 4 3 2 2 2

题目数据

在这里插入图片描述

解题思路

很显然

先是要排序

之后就是处理

不难发现

每一个 b [ i ] b[i] b[i]都会和 a [ i ] a[i] a[i] a [ i + 1 ] a[i+1] a[i+1]进行匹配

所以我们只要预处理就行了

AC代码

#pragma GCC diagnostic error "-std=c++11"
#pragma GCC optimize(3)
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,b[200005],c[200005],d[200005],qz[200005],hz[200005],ans[200005];
struct node
{
	int sum,num;
}a[200005];
bool cmp(node x,node y)
{
	return x.sum<y.sum;
}
int main()
{
	scanf("%d",&n);
	for(register int i=1;i<=n+1;i++)
	{	
	 	scanf("%d",&a[i].sum);
		a[i].num=i;//存原来编号
	}
	for(register int i=1;i<=n;i++)
	 scanf("%d",&b[i]);
	sort(a+1,a+n+2,cmp);
	sort(b+1,b+n+1);
	for(int i=1;i<=n;i++)//预处理
	{
		c[i]=max(0,a[i].sum-b[i]);
		d[i]=max(0,a[i+1].sum-b[i]);
	}
	for(int i=1;i<=n;i++)qz[i]=max(qz[i-1],c[i]);
	for(int i=n;i>=0;i--)hz[i]=max(hz[i+1],d[i]);
	for(int i=1;i<=n+1;i++)ans[a[i].num]=max(qz[i-1],hz[i]);
	for(register int i=1;i<=n+1;i++)
	 printf("%d ",ans[i]);
	return 0;
}

谢谢

以上是关于2021.7.19提高B组模拟7T3 只不过是长的领带(贪心)的主要内容,如果未能解决你的问题,请参考以下文章

2021.8.16提高B组模拟7T3 + P7414 [USACO21FEB] Modern Art 3(动态规划)

2021.7.19提高B组模拟7T2 最大公约数(欧拉公式)

jzoj7197「JOI 2020 Final」只不过是长的领带(两种做法)

6861. 2020.11.14提高组模拟终末作战

Latex排版中,如何输入长的等价符号(\sim),且上下可添加文字或公式?

2017.12.09NOIP提高组模拟赛A组