zoukankan      html  css  js  c++  java
  • Cats and Fish HihoCoder

    Cats and Fish

     HihoCoder - 1631

    题意:

    有一些猫和一些鱼,每只猫有固定的吃鱼速度,吃的快的猫优先选择吃鱼,问在x秒时有多少完整的鱼和有多少猫正在吃鱼?

    题解:

    模拟一下。两层循环模拟在每一秒时,每个猫的状态是什么样子的,如果在这一秒这个猫没有吃鱼,而鱼还有剩余,那么就给猫吃,如果当前t秒是猫吃鱼速度的倍数,就说明这个猫刚好吃完,又可以给她鱼吃了。

    #include <bits/stdc++.h>
    using namespace std;
    struct node
    {
        int f;  // f当前是否有鱼吃 v是吃鱼的速度
        int v;
    } s[1005];
    bool cmp(struct node a,struct node b)
    {
        return a.v < b.v;
    }
    int main()
    {
        int n,m,x;
        while(~scanf("%d %d %d", &m, &n, &x))
        {
            for(int i = 1; i <= n; i ++)
            {
                scanf("%d",&s[i].v);
                s[i].f = 0;
            }
            sort(s + 1, s + 1 + n, cmp);
            int sum1 = m, sum2 = 0;
            for(int i = 0; i <= x; i ++)
            {
                for(int j = 1; j <= n; j ++)
                {
                    if(i % s[j].v == 0)   // 如果当前是这个猫的吃鱼的速度的倍数,那么肯定能够给ta吃。
                        s[j].f = 0;
                    if(sum1 <= 0)   // 如果没有鱼了,就不用继续了
                        continue;
                    else           // 否则,当前这只没有鱼吃的猫会选择一条鱼吃
                    {
                        if(s[j].f == 0 && i != x)   // i是从0开始
                        {
                            s[j].f = 1;
                            sum1--;
                        }
                    }
                }
            }
            for(int j = 1; j <= n; j ++)   // 还有标记的猫就是正在第x秒在吃鱼的啦
            {
                if(s[j].f == 1)
                    sum2 ++;
            }
            printf("%d %d
    ",sum1,sum2);
        }
        return 0;
    }
    
    
  • 相关阅读:
    仿windows的嵌入式GUI系统(一)
    入群必看内容。
    嵌入式开发入门(2)
    仿windows消息机制的嵌入式GUI系统(二)(未完)
    使用硬件定时器软模拟多个定时器(8.15改进版)
    Python 文件目录操作
    C/C++ cast
    C/C++ basic
    C/C++ debug
    C++ 引用返回值
  • 原文地址:https://www.cnblogs.com/lcchy/p/10139455.html
Copyright © 2011-2022 走看看