先来看看题目,此处借用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;
}