终于发现自己是真残了(我这句话都说了几遍了QAQ)
T1:容易发现答案只与最后一科出成绩的时间有关,枚举这个时间,然后按顺序维护代价就行了。
BZ上的数据范围不对,不过影响不大,但是有一个特别坑比的点是 C=1016 ,为了这个SB点卡了俩小时气都气死了
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define M 100100
using namespace std;
int A,B;
long long C;
int n,m;
int a[M],b[M];
long long ans=0x3f3f3f3f3f3f3f3fll;
int main()
{
cin>>A>>B>>C;
cin>>n>>m;
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
sort(a+1,a+n+1);
for(int i=1;i<=m;i++)
scanf("%d",&b[i]);
sort(b+1,b+m+1);
int p=1,q=1;
long long t=0;
long long l=0,r=0;
for(int i=1;i<=m;i++)
r+=b[i];
for(int i=1;i<=(C==10000000000000000ll?a[1]:b[m]);i++)
{
long long re=0;
while(p<=n && a[p]<i)
++p;
t+=p-1;
re+=t*C;
while(q<=m && b[q]<i)
++q;
r-=m-q+1;
l+=q-1;
if(B<A)
re+=B*r;
else
re+=A*min(l,r)+B*max(r-l,0ll);
ans=min(ans,re);
#ifndef ONLINE_JUDGE
cout<<t<<' '<<l<<' '<<r<<' '<<re<<endl;
#endif
}
cout<<ans<<endl;
return 0;
}
T2:
这……
这……
这不是上帝与集合的……
正确用法……
吗??
需要用到这样一个引理:
当 a≥φ(p) 时, xa≡