2020广工文远知行杯新生程序设计竞赛(初赛)A题

这篇博客介绍了一个C++程序,用于处理一个涉及多个水桶动态倒水的问题。程序通过记录每个桶在何时被倒空的秒数来跟踪水量,如果查询某个桶的水量,则根据已记录的时间计算剩余水量。核心逻辑在于理解每秒水位上升1mm,并正确处理已倒空的桶。
摘要由CSDN通过智能技术生成

先来看看题目,此处借用error的图
在这里插入图片描述
此处小难点在于之后统计倒过水的桶的水量,但实际上倒掉就变0(且每秒增加1mm),我们只需要将倒掉的秒数作为倒掉的水量即可,开个数组记录一下第几秒倒掉第几个桶水的即可(我懒,所以直接用拼音)。jilu[x]=t
以下是ac代码

#include<stdio.h>
int main()
{
    int n,q;//n为桶数,q为操作次数
    scanf("%d%d",&n,&q);//录入
    int i,mode,t,x,cnt = 0;
    //i循环变量,mode是模式的意思,1即是倒水,2是查看多少水
    //t为秒数,x是第几个桶,cnt是计数器
    int jilu[n+1];//这个数组用于记录在几秒时母牛哥把水倒了
    //开n+1是因为我习惯从1开始
    for (i = 1; i <= n; i++)
    {
        jilu[i] = 0;//初始化所有水桶0秒倒水
    }
    for ( i = 1; i <= q; i++)
    {
        scanf("%d%d%d",&mode,&t,&x);
        if (mode==1)//如果选择了倒水模式
        {
            jilu[x] = t;//在第几秒倒了第几个桶的水
        }
        else//查看第几个桶有多少水
        {//如果之前有倒过,那要减掉之前倒了的。
        //由于每秒上涨1mm所以倒的时候是几秒就倒了几
            printf("%d\n",t-jilu[x]);
        }
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值