前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Cats and Fish HihoCoder - 1631

Cats and Fish HihoCoder - 1631

作者头像
Lokinli
发布2023-03-09 17:08:00
2050
发布2023-03-09 17:08:00
举报
文章被收录于专栏:以终为始以终为始

Cats and Fish

HihoCoder - 1631

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

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

代码语言:javascript
复制
#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\n",sum1,sum2);
    }
    return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-11-06,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Cats and Fish
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档