• Codeforces Round #552 (Div. 3)-C-Gourmet Cat


    http://codeforces.com/contest/1154/problem/C

    题意:

    有一只猫,周一周四周日吃鱼肉,周二周六吃兔肉,周三周五吃鸡肉,现给出三种肉的数量,问最多能吃多少天?

    解题:

    先看看这些肉最多能支撑多少个完整周,必然会有最少的一样肉求模后很小,多出来的肉从周一到周日暴力循环,接在完整周的前后。

    #include<stdio.h>
    #include<math.h>
    #include<string.h>
    #include<algorithm>
    #include<string>
    #include<vector>
    #include<iostream>
    #include<cstring>
    #include<set>
    #include<queue>
    #define inf 0x3f3f3f3f
    #define ll long long
    using namespace std;
    
    /**
    1 4 7鱼肉
    2 6 兔子
    3 5 鸡肉
    输入 a,b,c分别表示鱼肉,兔肉,鸡肉的天数
    %7
    0 3 6 鱼肉
    1 5 兔肉
    2 4 鸡肉
    */
    int a,b,c;
    int main()
    {
        while(scanf("%d%d%d",&a,&b,&c)!=EOF)
        {
            int x[3];
            x[0]=a/3;
            x[1]=b/2;
            x[2]=c/2;
            int minn=min(x[0],min(x[1],x[2])); ///最少支撑的周数
            int r[3];
            r[0]=a-minn*3;
            r[1]=b-minn*2;
            r[2]=c-minn*2;
            int maxx=-inf;
            for(int i=0;i<7;i++)///i表示周几开始循环
            {
                int sum=minn*7;
                int temp0=r[0];
                int temp1=r[1];
                int temp2=r[2];
                for(int j=i;;j++)///j是第几天
                {
                    int k=j%7;///当前周几
                    if(k==0 || k==3 || k==6)
                    {
                        if(temp0)
                        {
                            temp0--;
                            sum++;
                        }
                        else
                            break;
                    }
                    else if(k==1 || k==5)
                    {
                        if(temp1)
                        {
                            temp1--;
                            sum++;
                        }
                        else break;
                    }
                    else
                    {
                        if( temp2 )
                        {
                            temp2--;
                            sum++;
                        }
                        else
                            break;
                    }
                }
                maxx=max(maxx,sum);
            }
            printf("%d
    ",maxx);
        }
        return 0;
    }
  • 相关阅读:
    查找算法:二分查找法(折半查找)
    钞票找零-贪心,动态规划算法
    PHP7与php5
    网站高并发解决方案(理论知识) 二
    loj#6566. 月之都的密码
    我的 Linux 配置
    CTSC2011 幸福路径
    WC2018 即时战略
    uoj#460 新年的拯救计划
    bzoj 5016 一个简单的询问
  • 原文地址:https://www.cnblogs.com/shoulinniao/p/10833788.html
Copyright © 2020-2023  润新知