前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2015 计蒜之道 初赛(4)爱奇艺的自制节目(枚举 贪心)

2015 计蒜之道 初赛(4)爱奇艺的自制节目(枚举 贪心)

作者头像
Angel_Kitty
发布2018-04-09 10:32:51
4840
发布2018-04-09 10:32:51
举报

爱奇艺的自制节目

爱奇艺作为一家视频网站巨头,要为上亿的用户每天都提供“悦享品质”的服务。除了引进一些优秀的影视作品外,爱奇艺还做了一些诸如奇葩说、晓松奇谈的自制节目。爱奇艺最近又准备制作四档新的节目,它们分别是 W, X, Y, Z;但是现在能用来录这些节目的演播室只有两个,分别是演播室 A 和演播室 B。        

            W 节目的现场搭建比较复杂,每一期都要在演播室 A 来录制,X 节目的摄影机位调整会影响节目质量,每一期都固定在演播室 B 来录制。而节目 Y 和节目 Z 的搭建都比较容易移动,摄影也没有特别的要求,既可以在演播室 A 录制,也可以在演播室 B 录制。        

            已知 W 节目一共 Ew 期,每期录制需要 w 分钟;X 节目一共 Ex 期,每期录制需要 x 分钟;Y 节目一共 Ey 期,每期录制需要 y 分钟;Z 节目一共 Ez 期,每期录制需要 z 分钟。        

            每一期节目从开始到结束必须在同一个演播室内录制,而整个节目不必每一期都在同一个演播室内录制。现在爱奇艺希望在最短时间内在这两个演播室内将四档节目录制完成,在节目都连续录制的假设下,你能帮他们算出将节目全部录制完成所需的最短时间么?        

输入格式

第一行输入一个整数 T (1 ≤ T ≤ 50),表示数据组数。        

            接下来一共输入 T 行数据,每行输入一组 8 个整数 Ew, Ex, Ey, Ez, w, x, y, z (1 ≤ Ew, Ex, Ey, Ez, w, x, y, z ≤ 106)。        

输出格式

            输出 T 行,每行一个整数,表示该组四档节目在连续录制的假设下,全部录完所需要的最短时间。        

样例输入
代码语言:javascript
复制
1
100 1 3 5 10 1 10 10
样例输出
代码语言:javascript
复制
1000

题目链接:https://nanti.jisuanke.com/t/430

解题思路:

暴力枚举节目Y在A演播室的天数,然后贪心。

注意INF的取值。

下面给出AC代码:

代码语言:javascript
复制
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 #define INF 1ll<<60
 5 int main()
 6 {
 7     ll T;
 8     while(scanf("%lld",&T)!=EOF)
 9     {
10         while(T--)
11         {
12             ll Ew,Ex,Ey,Ez,w,x,y,z;
13             cin>>Ew>>Ex>>Ey>>Ez>>w>>x>>y>>z;
14             ll tw=Ew*w;
15             ll tx=Ex*x;
16             if(y<z)
17             {
18                 swap(Ey,Ez);
19                 swap(y,z);
20             }
21             ll ans=INF;
22             for(ll i=0;i<=Ey;i++)
23             {
24                 ll ta=tw+i*y;
25                 ll tb=tx+(Ey-i)*y;
26                 ll sum;
27                 if(ta>tb)
28                     swap(ta,tb);
29                 ll tmp=(tb-ta)/z;
30                 if(Ez<=tmp)
31                     sum=tb;
32                 else
33                 {
34                     ta+=tmp*z;
35                     ll left=Ez-tmp;
36                     if(left%2==1)
37                         sum=ta+((left+1)/2)*z;
38                     else sum=tb+left/2*z;
39                 }
40                 ans=min(ans,sum);
41             }
42             printf("%lld\n",ans);
43         }
44     }
45     return 0;
46 }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-05-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 爱奇艺的自制节目
    • 解题思路:
      • 下面给出AC代码:
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档