ACM汇总学习:https://blog.csdn.net/weixin_39778570/article/details/83187443
题目链接:https://www.nowcoder.com/acm/contest/171/B
题意
n个买家,m个卖家,当物品价格上升的时候,买家需求下降,卖家供给减少,求供求与需求差绝对值最小。
解法
由于数据达到10w,枚举价格的话,时间是O(n2),显然会超时,所以需要一个O(nlogn)时间复杂度的算法。
由于题目是求最值问题,而且买家需求量和卖家供给量分别于物品价格呈递减和递增关系。故可以二分商品价格,根据供求关系调整商品价格,供大于求降价,供不应求涨价。
这到题的做法类似,两个排序好的序列求中位数O(log(m+n))做法。
Code
#include<bits/stdc++.h>
#define ll long long
#define fo(i,j,n) for(ll i=j; i<=n; ++i)
using namespace std;
ll n,m;
ll a[100005],b[100005],c[100005];
ll ans = 1e18;
ll xq