wen
  • 板块灌水区
  • 楼主jacobcn
  • 当前回复12
  • 已保存回复12
  • 发布时间2024/8/29 17:14
  • 上次更新2024/8/29 20:31:28
查看原帖
wen
650471
jacobcn楼主2024/8/29 17:14

求助P1678

/*
知识点 
1.贪心算法 
思路 
1.
2.
用例  
1:输入:

输出:
2
2:输入:
())))))) 
输出:
3
3:输入:
())))))))(
输出:
5
4:输入:
(()())
输出:
0
5:输入:
输出:
核心代码 
1.
2.
*/
#include <bits/stdc++.h>
using namespace std;
/*int binary_search(priority_queue<int>* arr,int temp,int a,int b)
{
    int l=a,r=b;
    int mid;
    while(l>r)
    {
        mid=(l+r)/2;
        if(arr[mid]>temp)
        {
            l=mid+1;
        }
        else if(arr[mid]<temp)
        {
            r=mid-1;
        }
    }
    return mid; 
}
c++有自带的二分库函数lower_bound(),upper_bound()
*/ 
int main()
{
	int m,n;
	cin>>m>>n;
	int x[m];
	int y[n];
	for(int i=0;i<m;i++)
	{
		cin>>x[i];
	}
	for(int i=0;i<n;i++)
	{
		cin>>y[i];
	}
	sort(x,x+m);
	int minn;
	long long int ans=0;
	int s;
	for(int i=0;i<n;i++)
	{
		s=y[i];
		if(s>=x[n-1])
		{
			ans+=s-x[n-1]; 
		}
		else if(s<=x[0])
		{
			ans+=x[0]-s;
		}
		else
		{
			minn=min(abs(s-*lower_bound(x,x+m,s)),abs(*upper_bound(x,x+m,s)-s));
			ans+=minn;
		}
	}
	cout<<ans;
	return 0;
}
/*
耗时:0天0小时22分钟28秒50毫秒 
测试次数:5次 
提交次数:1=>0分,2=>100分 
评分:100分 
时间复杂度:O()
空间复杂度:O(1)
类型:
大改:1次
小改:8次
*/

服了,样例过了,测评全WA和两个RE

2024/8/29 17:14
加载中...