https://atcoder.jp/contests/abc247/tasks/abc247_c
递归即可解决:
#include
#include
#include
#include
#include
#include<string>
#include
#include
https://atcoder.jp/contests/abc247/tasks/abc247_d
不能用queue来模拟,复杂度过不去。我们只需要记录每一段的位置(前缀和维护),以及该段的value。
#include
#include
#include
#include
#include
#include<string>
#include
#include
https://atcoder.jp/contests/abc247/tasks/abc247_e
给定一个序列,以及两个数 X,Y. 问有多少子序列(连续的)满足:该序列的最小值为Y,最大值为X。
注意到的一点是:如果有一个数字不满足条件,即 a>X or a
我们使用双指针 L,R. 开始的时候移动右指针 R。当找到最小值和最大值时,即可break来统计数量。具体来说,如果区间 [ L, W ]满足条件,那么区间 [ L, i ],W< i < R都满足条件。最后移动左指针。
#include
#include
#include
#include
#include
#include<string>
#include
#include