1. 程式人生 > >洛谷P3745 [六省聯考2017]期末考試

洛谷P3745 [六省聯考2017]期末考試

close tin cto ide include efi vector play mil

傳送門

題解

技術分享圖片
//Achen
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<vector>
#include<cstdio>
#include<queue>
#include<cmath>
#define For(i,a,b) for(int i=(a);i<=(b);i++)
#define Rep(i,a,b) for(int i=(a);i>=(b);i--)
typedef 
long long LL; typedef double db; using namespace std; const int N=1e5+7; LL A,B,C,x,c1[N],c2[N],c3[N],c4[N],c5[N],c6[N],ans,mina=1e18,maxa=-1e18; int n,m,up=1e5; template<typename T>void read(T &x) { char ch=getchar(); x=0; T f=1; while(ch!=-&&(ch<0||ch>9)) ch=getchar();
if(ch==-) f=-1,ch=getchar(); for(;ch>=0&&ch<=9;ch=getchar()) x=x*10+ch-0; x*=f; } //#define DEBUG int main() { #ifdef DEBUG freopen("4868期末考試.in","r",stdin); freopen("4868期末考試.out","w",stdout); #endif read(A); read(B); read(C); read(n); read(m); ans=1e18; For(i,
1,n) { read(x); c1[x]+=x; c2[x]++; maxa=max(maxa,x); mina=min(mina,x); } For(i,1,m) { read(x); c3[x]++; c4[x]++; c5[x]+=x; c6[x]+=x;} For(i,1,maxa) c1[i]+=c1[i-1]; For(i,1,maxa) c2[i]+=c2[i-1]; For(i,1,up) c3[i]+=c3[i-1],c5[i]+=c5[i-1]; Rep(i,up,1) c4[i]+=c4[i+1],c6[i]+=c6[i+1]; For(i,mina,maxa) { if(i==37715) { int debug=1; } LL tp=c6[i+1]-c4[i+1]*i-(c3[i]*i-c5[i]); if(tp<0) tp=(c6[i+1]-c4[i+1]*i)*A; else tp=(c3[i]*i-c5[i])*A+tp*B; if(B<A) tp=(c6[i+1]-c4[i+1]*i)*B; if(c2[i]*i-c1[i]>=1e18/C) continue; ans=min(ans,(c2[i]*i-c1[i])*C+tp); } printf("%lld\n",ans); return 0; }
View Code

洛谷P3745 [六省聯考2017]期末考試