首页 > 其他 > 详细

爱奇艺的自制节目

时间:2019-03-09 23:01:14      阅读:189      评论:0      收藏:0      [点我收藏+]

https://nanti.jisuanke.com/t/A1011

题目思路比较简单,关键字是枚举和贪心。

w和x是固定的。只有y和z可以组合出各种情况。

如果以再将a固定,即每次将n个y用a演播室录,剩下ey-n个用b,则很简单就能判断出此种情况下的最短时间。

时间复杂度为O(n);

1ll<<60表示 longlong int型的最大值; 1ll代表longlong 整形的数值1; 

#include<iostream>
#define INF 1ll<<60
using namespace std;
typedef long long ll;
int n; ll M = INF;
int main()
{
    cin >> n;
    ll ew, ex, ey, ez, w, x, y, z;
    for (ll i = 0; i < n; i++)
    {
        cin >> ew >> ex >> ey >> ez >> w >> x >> y >> z;

        for (ll k = 0; k <= ey; k++)//y节目在演播室a的天数
        {
            ll a = k * y + ew * w;
            ll b = (ey - k)*y + ex * x;
            if (a < b) { ll s = a; a = b; b = s; }
            ll temp = (a - b)/z;
            if (temp >= ez) {
                if (M > a) M = a;
            }
            else
            {
                ll t = (ez - temp) / 2;
                ll la = a + t * z;
                ll lb = b + (t + 1+temp)*z;//此处括号了少加了个temp忘了把少的那部分补全
                if ((ez - temp) % 2)
                {
                    if (M > lb)M = lb;
                }
                else
                {
                    if (M > la) M = la;
                }
            }

        }
        cout << M << endl; M = INF;
    }
    return 0;
}

 

爱奇艺的自制节目

原文:https://www.cnblogs.com/worldcreator-zh/p/10503458.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!