2021 百度之星初赛第二场 1002.随机题意(贪心)

Posted issue是fw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021 百度之星初赛第二场 1002.随机题意(贪心)相关的知识,希望对你有一定的参考价值。

LINK

对于 a i a_i ai,满足条件的 b i b_i bi落在区间 [ a i − k , a i + k ] [a_i-k,a_i+k] [aik,ai+k]

考虑对这些区间按左端点排序,问题转化为让最多的区间分配到点(一个点只能属于一个区间)

考虑左端点最小的区间范围是 [ l i , r i ] [l_i,r_i] [li,ri],那么就让 l i l_i li点属于这个区间

Ⅰ.因为一个点只能属于一个区间,所以这样的做法一定不会更差,反正这个点给后续区间贡献也是1

Ⅱ.选定最左边的点可以使,这个被选定点影响后续区间的可能更小,所以更优秀

总之就是选点的时候尽量往左边选就好啦

#include <bits/stdc++.h>
using namespace std;
const int mod = 998244353;
const int maxn = 1e6+10;
int a[maxn],n,k;
int main()
{
	int t; cin >> t;
	while( t-- )
	{
		cin >> n >> k;
		for(int i=1;i<=n;i++)	scanf("%d",&a[i] );
		sort( a+1,a+1+n );
		int ans = 0, mx = -1e9;
		for(int i=1;i<=n;i++)
		{
			if( mx+1<=a[i]+k )
				mx = max( mx+1,a[i]-k ),ans++;
		}
		cout << ans << endl;
	}
}

以上是关于2021 百度之星初赛第二场 1002.随机题意(贪心)的主要内容,如果未能解决你的问题,请参考以下文章

2022百度之星程序设计大赛 - 初赛 - 第二场 1001 和

动态规划-hdoj-4832-百度之星2014初赛第二场

2017计蒜之道 初赛 第二场 百度的科学计算器(简单)

2018百度之星初赛(A)1002 度度熊学队列

2019 年百度之星 初赛一 1002 Game

2016"百度之星" - 初赛(Astar Round2A)1002 / HDU 5691 状态压缩DP