ABC247D Cylinder Solution

更好的阅读体验戳此进入

题面

存在一个队列,给定 q 个操作或询问,按以下格式输入:

1 x c,表示向队尾插入 cx

2 c,表示从队头取出 c 个元素并输出它们的和。

Solution

大概也算是个语法题?

维护一个队列,里面元素是个 pair < int, int > 记录元素值和数量,1 操作就是队尾插入一个 {x, c}2 操作判断一下,如果队头能取就取出来然后求和,否则对队头做一个类似 ODT 的 Split 的操作,然后对应维护一下 ans 即可。

对于 2 操作详细解释一下,不难想到维护询问剩余的 c,令队头元素的 cc,值为 x,显然若 cc,那么直接 ccc 然后答案加上 c×x 后把队头弹出,反之答案加上 c×xccc,注意判断队列非空即可。

Code

UPD

update-2022_10_24 初稿