对了一个测试点求调
查看原帖
对了一个测试点求调
1407005
butanlianai楼主2024/10/15 21:40

下了一个测试点,好像知道哪错了,但不会改。第二个测试点p全加起来是答案,但是用我的算法算出来不是这个,有三对d相等

#include<bits/stdc++.h>
using namespace std;
struct work{
	int d,p;
}a[100000001];
long long n,maxn=0,sum=0;
bool cmp(work l,work b)
{
	return l.d<b.d; 
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		scanf("%d%d",&a[i].d,&a[i].p);
	}
	sort(a+1,a+1+n,cmp);//排序
	for(int i=1;i<=n;i++)
	{
		if(a[i].d!=a[i-1].d)
		{
			maxn+=a[i].p;//贪心 
		}
		else
		{ 
			maxn=max(maxn,maxn-a[i-1].p+a[i].p);//选择最佳的方案 
		}
	}
	cout<<maxn;
} 
2024/10/15 21:40
加载中...