社区讨论
95pts求救QWQ
P3745[六省联考 2017] 期末考试参与者 3已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mi6zdvs2
- 此快照首次捕获于
- 2025/11/20 13:18 4 个月前
- 此快照最后确认于
- 2025/11/20 13:18 4 个月前
CPP
#include<queue>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define rint register int
#define _max(a,b) ((a)>(b) ? (a) : (b))
#define _min(a,b) ((a)<(b) ? (a) : (b))
typedef unsigned long long ll;
const int maxn=100086;
int n,m,t[maxn],b[maxn],l,r;
ll A,B,C;
inline ll Read(){
ll x=0;char c=getchar();
while (!isdigit(c))c=getchar();
while (isdigit(c)){
x=(x<<3)+(x<<1)+(c^48);
c=getchar();
}
return x;
}
inline ll calc(int x){
ll exp=0,ned=0,tot=0;
for (rint i=1;i<=m;++i){
if (b[i]>x)ned+=b[i]-x;
else exp+=x-b[i];
}
for (rint i=1;i<=n;++i)if (t[i]<x)tot+=(x-t[i]);
ll ans=(ll)tot*C;
if (A>B)ans+=(ll)B*ned;
else if (ned>exp){
ans+=(ll)exp*A+B*(ned-exp);
}
else {
ans+=(ll)A*ned;
}
return ans;
}
int main(){
A=Read(),B=Read(),C=Read();
n=Read(),m=Read();
for (rint i=1;i<=n;++i)t[i]=Read(),r=_max(r,t[i]);
for (rint i=1;i<=m;++i)b[i]=Read(),r=_max(r,b[i]);l=1;
while (l<r-1){
int mid=(l+r)>>1;
int mmid=(mid+r)>>1;
if (calc(mid)<calc(mmid))r=mmid;
else l=mid;
}
printf("%lld\n",_min(calc(l),calc(r)));
return 0;
}
居然出乎意料的了.....
回复
共 2 条回复,欢迎继续交流。
正在加载回复...