Shoi2017(六省联考)Day1题解

终于发现自己是真残了(我这句话都说了几遍了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

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值