爱奇艺的自制节目
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; }