[CF436D]Pudding Monsters】的更多相关文章

题目大意:有一个长度为$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$个怪兽最多可以覆盖多少个点,…
[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…
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}\) 即可.…
题意: 给你一个排列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(这个一定只有有…