CF526F Pudding Monsters】的更多相关文章

CF526F Pudding Monsters 题目大意:给出一个\(n* n\)的棋盘,其中有\(n\)个格子包含棋子. 每行每列恰有一个棋子. 求\(k*k\)的恰好包含\(k\)枚棋子的子矩形个数. 比较有意思的一道分治题目. 首先我们将所有棋子归位 设\(sum_i\)表示第\(i\)行的棋子在第\(sum_i\)列 那么\(sum\)数组就一定是一个排列 而题目就可以转化为 这个排列中有多少个区间的值域是连续的 我们考虑分治解决,每次考虑夸\(mid\)的答案个数 我们提前预处理出\(…
CF526F Pudding Monsters 传送门 模型转换:对于一个 \(n\times n\) 的棋盘,若每行每列仅有一个棋子,令 \(a_x=y\),则 \(a\) 为一个排列. 转换成排列过后问题即变为:给定一个排列,求有多少个区间满足 \(\max-\min=r-l\). 然后我突然发现原来模拟赛好像考过这玩意.好像是用单调栈加线段树维护. 然后我发现我完全不懂(看来是当时对着题解抄的) 事实上枚举右端点维护 \(\max-\min-\operatorname{len}\) 即可.…
[CF526F]Pudding Monsters 题意:给你一个排列$p_i$,问你有对少个区间的值域段是连续的. $n\le 3\times 10^5$ 题解:bzoj3745 Norma 的弱化版.直接cdq分治,考虑最大值和最小值分别在左右两边的情况.这里就当练练手了. #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespac…
In this problem you will meet the simplified model of game Pudding Monsters. An important process in developing any game is creating levels. A game field in Pudding Monsters is an n × n rectangular grid, n of its cells contain monsters and some other…
F. Pudding Monsters time limit per test 2 seconds memory limit per test 256 megabytes In this problem you will meet the simplified model of game Pudding Monsters. An important process in developing any game is creating levels. A game field in Pudding…
In this problem you will meet the simplified model of game Pudding Monsters. An important process in developing any game is creating levels. A game field in Pudding Monsters is an n × n rectangular grid, n of its cells contain monsters and some other…
题意: 给你一个排列pi,问你有对少个区间的值域段是连续的. n≤3e5 题解: bzoj3745…
大意: n*n棋盘, n个点有怪兽, 求有多少边长为k的正方形内恰好有k只怪兽, 输出k=1,...,n时的答案和. 等价于给定n排列, 对于任意一个长为$k$的区间, 若最大值最小值的差恰好为k, 则产生1贡献, 求贡献和.考虑分治, 问题就转化为如何$O(n)$求出跨越$mid$的贡献, 可以讨论最大值最小值的位置, 双指针求出. #include <iostream> #include <algorithm> #include <cstdio> #define R…
先把题目抽象一下: 有一个静态的数组,求有多少个区间[i,j]满足:j-i==max{ai,...,aj}-min{ai,...,aj} 也就是要求max-min+i-j==0的区间数 所以肿么做呢? 首先枚举i(这里倒着做,比较好理解),维护以i为开头的所有区间 相当于每次要在一坨区间的最前面同时加一个元素(并且增加一个仅含有ai的区间[i,i]) 然后很惊喜的发现实际上对于这一坨区间的权值(max-min+i-j)只有以下几个操作: 1.同时-1,因为i减小了1 2.改max(这个一定只有有…
题意简述 开始有无限长的一段格子,有n个格子种有布丁怪兽,一开始连续的布丁怪兽算一个布丁怪兽. 每回合你可以将一个布丁怪兽向左或右移动,他会在碰到第一个布丁怪兽时停下,并与其合并. 有m个特殊格子,询问最终你最多可以让几个特殊的格子上被布丁覆盖. 题解思路 dp f[i]表示前i个布丁最多可覆盖的特殊格子数 g[i]表示前i个布丁,第i个不动的情况下最多可覆盖的特殊格子数 可得转移方程: g[i] = max(g[i], f[l[i - len] - 1] + sum(b[j], a[i]));…