码迷,mamicode.com
首页 > 其他好文 > 详细

444 D. Ratings and Reality Shows

时间:2018-09-29 23:51:45      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:out   als   ret   lse   演唱会   ali   code   link   pre   


一个模特有两种活动。

① 拍照片,挣钱 a。 ②开演唱会,花费b

给定模特这两种工作的时间表。

模特可以选定一个时间举办一个座谈会,那么他拍照片的钱变c。开演唱会会花费d。

要求在模特座谈会之前和后len天(当天凌晨即可生效) 都不能赔钱。 要求你输出最小的座谈会天数。 没有输出-1.。

ll n, a, b, c, d, st, len;
struct node
{
    ll tim, tp;
} p[N];
ll calc1(ll x)
{
    if(x==-1)
        return 0;
    return x ? a : -b;
}
ll calc2(ll x)
{
    return x ? c : -d;
}
ll tail = 0;
ll mi = inf;
ll res = 0;
ll sum = 0;
int main()
{
    sdf(n), sdf(a), sdf(b), sdf(c), sdf(d), sdf(st), sdf(len);
    p[0].tim = -1, p[0].tp = -1;
    p[n + 1].tim = 1e18;//这里开大点,0x3f3f3f3f不够
    For(i, 1, n)
        sdf(p[i].tim),
        sdf(p[i].tp);
    For(i, 0, n)
    {
        sum += calc1(p[i].tp);
        if (sum < -st)
        {
            cout << -1;
            return 0;
        }
        while (p[tail + 1].tim <= p[i].tim + len)
        {
            ++tail, res += calc2(p[tail].tp);
            chkmin(mi, res);
        }
        if (sum + mi >= -st)
        {
            cout << p[i].tim + 1;
            return 0;
        }
        mi -= calc2(p[i + 1].tp);
        res -= calc2(p[i + 1].tp);
    }
    return 0;
}

444 D. Ratings and Reality Shows

标签:out   als   ret   lse   演唱会   ali   code   link   pre   

原文地址:https://www.cnblogs.com/planche/p/9726927.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!