选择客栈
这个题,因为他没有说两个人的顺序对答案有影响,所以我们可以考虑固定一个人为右端点,记录最靠近这个右端点的人的可以去的咖啡店
如果说这个点大于这种颜色的客栈,那么就可以在之前的颜色中乱选,就是可以把之前有的所有这个颜色的客栈记为贡献
好像就口胡完了
#include <cstdio> const int Maxn = 2e5 + 5; int N, K, P, Now; int Ans, Color, Price; int Last[Maxn], Sum[Maxn], Cnt[Maxn]; int main() { scanf("%d %d %d", &N, &K, &P); for (int i = 0; i < N; ++i) { scanf("%d %d", &Color, &Price); if (Price <= P)Now = i; if (Now >= Last[Color])Sum[Color] = Cnt[Color]; Last[Color] = i; Ans += Sum[Color]; ++Cnt[Color]; } printf("%d\n", Ans); }