然后我们可以看到的是要求选 k 次,然后发现这个函数还是个凸性的,因此想到 wqs 二分进行判断。那么剩下的就是类似于一个二分图匹配的过程了,但是很明显这个复杂度是肯定过不去的。所以考虑模拟费用流,每次先选择最小的那个 a 和 b 进行配对,然后利用反悔贪心,把负的权值加进堆里面,这样就做完了。
//editor : DRYAYST//Wo shi ge da SHA BI#include<bits/stdc++.h>#define g() getchar()#define il inline#define ull unsigned long long#define eps 1e-10#define ll long long#define pa pair<int, int>#define for_1(i, n) for(int i = 1; i <= (n); ++i)#define for_0(i, n) for(int i = 0; i < (n); ++i)#define for_xy(i, x, y) for(int i = (x); i <= (y); ++i)#define for_yx(i, y, x) for(int i = (y); i >= (x); --i)#define for_edge(i, x) for(int i = head[x]; i; i = nxt[i])#define int long long#define DB double#define ls (p<<1)#define rs (p<<1|1)#define m_p make_pair#define fi first#define se secondusingnamespace std;
constint N = 1e6 + 10, INF = 0x7f7f7f7f, mod = 1e9 + 7;
il intqpow(int x, int k){int ans = 1; while(k) {if(k & 1) ans = ans * x % mod; x = x * x % mod; k >>= 1; } return ans; }
il intAdd(int x, int y){return (x += y) %= mod;}
il intDel(int x, int y){return (x = x - y + mod) % mod;}
il intMul(int x, int y){return x * y % mod;}
il intinv(int x){returnqpow(x, mod - 2); }
inlineintre(){
int x = 0, p = 1;
char ch = getchar();
while(ch > '9' || ch < '0') {if(ch == '-') p = -1; ch = getchar();}
while(ch <= '9'and ch >= '0') {x = (x << 3) + (x << 1) + (ch ^ 48); ch = getchar();}
return x * p;
}
int n, k, ans, sum, cnt;
int a[N], b[N];
priority_queue<pa, vector<pa>, greater<pa> > q;
il boolcheck(int x){
while(q.size()) q.pop(); cnt = sum = 0;
for(int i = 1; i <= n; ++i) {
q.push(m_p(a[i], 0));
if(q.top().first + b[i] + x <= 0) {
sum += q.top().first + b[i] + x;
if(!q.top().second) cnt++; q.pop();
q.push(m_p(-(b[i] + x), 1));
}
}
return cnt >= k;
}
signedmain(){
freopen("world.in","r",stdin); freopen("world.out","w",stdout);
n = re(); k = re(); for_1(i, n) a[i] = re(); for_1(i, n) b[i] = re();
int l = -INF, r = INF;
while(l <= r) {
int mid = (l + r) >> 1;
if(check(mid)) ans = mid, l = mid + 1;
else r = mid - 1;
}
check(ans); cout<<(sum - k * ans);
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析