刚刚月赛的2B
  • 板块学术版
  • 楼主qfpjm
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/9/24 18:24
  • 上次更新2023/10/27 10:07:13
查看原帖
刚刚月赛的2B
342868
qfpjm楼主2022/9/24 18:24

请问是贪心吗?

如果是有没有大佬能帮我看看我的代码哪里错了,只有20

#include <bits/stdc++.h>

using namespace std;

struct node
{
	int l, r, len;
}a[300005];

int n, ansl, ansr, k = 1;

bool cmp(node x, node y)
{
	if (x.len == y.len)
	{
		return x.l < y.l;
	}
	return x.len > y.len;
}

int main()
{
	cin >> n;
	for (int i = 1 ; i <= n ; i ++)
	{
		cin >> a[i].l >> a[i].r;
		a[i].len = a[i].r - a[i].l;
	}
	sort(a + 1, a + 1 + n, cmp);
	ansl = a[1].l;
	ansr = a[1].r;
	for (int i = 2 ; i <= n ; i ++)
	{
		if (ansl <= a[i].l && ansr >= a[i].r)
		{
			ansl = a[i].l;
			ansr = a[i].r;
		}
		else if (ansl < a[i].l && ansr >= a[i].l)
		{
			if (a[i].l - ansl > ansr - a[i].l + 1)
			{
				ansr = a[i].l - 1;
			}
			else
			{
				ansl = a[i].l;
			}
		}
		else if (ansl <= a[i].r && ansr > a[i].r)
		{
			if (a[i].r - ansl + 1 > ansr - a[i].r)
			{
				ansr = a[i].r;
			}
			else
			{
				ansl = a[i].r + 1;
			}
		}
		if (ansl >= a[i].l && ansr <= a[i].r)
		{
			k ++;
		}
	}
	cout << (ansr - ansl) * k;
	return 0;
}

2022/9/24 18:24
加载中...