直接模拟场景的算法

项目场景:

在开始时,给水管和排水管都是打开状态的,并且游泳池里没有水。在自动装置的作用下,每经过t1分钟,给水管的状态都会改变,即从打开状态变为关闭状态或从关闭状态变为打开状态,而同时每经过t2分钟,排水管的状态也会改变。当给水管打开时,给水管每分钟会向游泳池里注入m1升水;当排水管打开时,排水管每分钟会把游泳池里水排走m2升;当给水管和排水管同时打开时,游泳池的水量变化为每分钟(m1-m2)升。当然泳池的水量不能变为负数,同时泳池也有个最大容量m,水量不能超过m升。那么经过t分钟后,游泳池里有多少升水?

问题描述:

输入第一行为一个正整数T,表示有T组数据。

每组数据的为一行包含六个整数,分别表示m, t, m1, t1, m2, t2。

数据范围:

对于所有数据,满足1<=T<=10, 1<=m<=100000, 1<=t<=86400, 1<=m1,m2<=100, 1<=t1,t2<=10。

对于每一个数据,输出一行,包括一个整数,为在t分钟后游泳池中的水量

原因分析:

1.注意限制:不能为负数,不能超过m
2.数据范围:等下再说
3.思路:能不能以t循环来模拟
那么大概模拟的量是10*86400就是80万次计算。计算量还可以接受。
4.假设按照上述思路:
T循环
t循环
排水
如果<0设为0,如果>m设为m
给水
如果<0设为0,如果>m设为m
如果t%t10
需要改变排水
如果t%t2
0
需要改变给水

结束t

结束T

5.写出程序

需要注意的问题:
数字表示范围
int可表示到2亿
多少的运算量是可以接受的呢?
反正上次的400亿不行

解决方案:

#include <bits/stdc++.h>
 using namespace std;
 
 
 
 int main
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值