CF526F Pudding Monsters 题解】的更多相关文章

CF526F Pudding Monsters 题目大意:给出一个\(n* n\)的棋盘,其中有\(n\)个格子包含棋子. 每行每列恰有一个棋子. 求\(k*k\)的恰好包含\(k\)枚棋子的子矩形个数. 比较有意思的一道分治题目. 首先我们将所有棋子归位 设\(sum_i\)表示第\(i\)行的棋子在第\(sum_i\)列 那么\(sum\)数组就一定是一个排列 而题目就可以转化为 这个排列中有多少个区间的值域是连续的 我们考虑分治解决,每次考虑夸\(mid\)的答案个数 我们提前预处理出\(…
考场上没有认真审题,没有看到该题目的特殊之处: 保证每一行和每一列都恰有一只军队,即每一个Xi和每一个Yi都是不一样 的. 于是无论如何也想不到复杂度小于$O(n^3)$的算法, 只好打一个二维前缀和草草了事. 所以还是要仔细审题. $O(n^2)$算法: 因为每行上只有一个军队,每列上仅有一个军队, 我们发现一个性质,如果记录上每行军队的列数,设h(x)表示第x行军队所在列, 一个$x->y$方案是合法的当且仅当$y-x=max(h(i))-min(h(i))$   $i \in [x,y]$…
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…
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…
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个格子种有布丁怪兽,一开始连续的布丁怪兽算一个布丁怪兽. 每回合你可以将一个布丁怪兽向左或右移动,他会在碰到第一个布丁怪兽时停下,并与其合并. 有m个特殊格子,询问最终你最多可以让几个特殊的格子上被布丁覆盖. 题解思路 dp f[i]表示前i个布丁最多可覆盖的特殊格子数 g[i]表示前i个布丁,第i个不动的情况下最多可覆盖的特殊格子数 可得转移方程: g[i] = max(g[i], f[l[i - len] - 1] + sum(b[j], a[i]));…
题目大意:有一个长度为$2\times 10^5$的板,有$n(n\leqslant 10^5)$个格子$a_1,\dots,a_n$有布丁怪兽,一开始连续的怪兽算一个怪兽,有$m(m\leqslant 2000)$个特殊点$b_1,\dots,b_n$,你可以向左或向右移动怪兽,它会在碰到第一怪兽时停下,并成为一个怪兽.最左边和最右边的怪兽向两边移动会掉出板.问最多可以让布丁怪兽压到几个特殊点. 题解:先把连续的布丁怪兽看做长度个不同的怪兽,令$f_i$表示前$i$个怪兽最多可以覆盖多少个点,…