hdu—1008

来源:互联网 发布:石醒宇 知乎 编辑:程序博客网 时间:2024/06/14 06:28

yyf的家庭影院

Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 0    Accepted Submission(s): 0


Problem Description
yyf是全机房最有钱的土豪,独自拥有一个家庭影院。有一天yyf想要请他的女朋友们(如:椎名真白,雪之下雪乃,宫园薰,以及楪祈等等)一起看新出的电影,于是花重金购买了《kimi no na wa》。
yyf的女朋友们对椅子的扶手有特别的要求。有的要有左边的扶手用才开心,有的要有右边的扶手用才开心,有的要两边的扶手都给自己用才开心,还有一些觉得扶手无所谓,只要能到yyf家看电影就很开心(吃惊!)。
yyf的家庭影院的座位只有一排N个位置(电影院中两个相邻的位置之间是共用一个扶手)。现在yyf想要邀请尽可能多的女朋友来家中看电影,并且使她们感到开心,从而增加对自己的好感度。由于yyf忙于肝阴阳师,就花重金来请你来计算,他可以最多邀请几位女朋友一起来看这部电影。
 

Input
第一行输入一个N,代表家庭影院的位置数目;
第二行输入四个整数:a,b,c,d。代表yyf有a个喜欢左边扶手的女朋友,b个喜欢右边扶手的女朋友,c个同时喜欢左右两个扶手的女朋友,d个只要和来yyf家看电影就很开心的女朋友。
其中N,a,b,c,d均在1~1010
 

Output
本场电影yyf最多可以邀请多少个女朋友。
 

Sample Input
10 2 2 4 21010 10 10 10
 

Sample Output
9 10
Hint
注意输入输出使用__int64__int64 a;printf("%I64d\n",a);scanf("%I64d",&a);
【分析】
贪心...显然需要左手的妹子坐最左边的话,对整个座位是没有影响的,所以需要左手的妹子坐左边,需要右手的妹子坐右边,需要单手的妹子坐完之后,如果还有位置剩余,那就给双手的妹子坐,双手的妹子隔着坐就好了,然后多出来的位置让没有需求的妹子补上
//作为一只肥宅的我表示...为什么肥宅会有女朋友,还是女朋友"们",女朋友个数居然有4*10^10????这个肥宅怕是要上天了...
【代码】
#include <cstdio>#include <cstring>#include <iostream> #include <algorithm>using namespace std;int main(){    __int64 N,a,b,c,d;    while (~scanf("%I64d%I64d%I64d%I64d%I64d",&N,&a,&b,&c,&d))    {        __int64 ans=a+b;        if (a+b+d>=N)         {            printf("%I64d\n",N);            continue;        }        N-=ans;        if (((N+1)/2)<c) ans+=(N+1)/2,N-=(N+1)/2;        else ans+=c,N-=c;        if (N>d) ans+=d;        else ans+=N;        printf("%I64d\n",ans);    }    return 0;}