暴力+贪心,开了O2以后没有tle,但是2456点wa了,求助
查看原帖
暴力+贪心,开了O2以后没有tle,但是2456点wa了,求助
471525
GUGU_HW楼主2021/2/24 17:42

第二点跑4465(答案4460) 代码如下

#include <algorithm>
#include <iostream>
#include <cstdio>
#define maxn 50005
using namespace std;
size_t d0[maxn], d[maxn];
int main ()
{
	size_t l;
	int m, n;
	cin >> l >> n >> m;
	d0[0] = 0;
	for (int i = 1; i <= n; i++)
		cin>>d0[i];
	d0[n + 1] = l;
	for (int i = 0; i <= n; i++)
		d[i] = d0[i + 1] - d0[i];
	for (int i = 0; i < m; i++)
	{
		size_t position = min_element(d, d + n + 1 - i) - d;
		if (d[position + 1] > d[position - 1])
			d[position - 1] += d[position];
		if (d[position + 1] <= d[position - 1])
			d[position + 1] += d[position];
		for (int j = position; j < n - i; j++)
			d[j] = d[j + 1];
	}
	cout << *min_element(d, d + n - m);
	return 0;
}
2021/2/24 17:42
加载中...