题解[51nod1555] 布丁怪】的更多相关文章

题解[51nod1555] 布丁怪 题面 解析 本文参考这位dalao的题解 首先有一个巧妙的转换, 开一个数组记录每个横坐标的纵坐标, 简单来说就是对于点(x,y),令a[x]=y. 于是问题就变成了求满足区间最大值与最小值的差恰好等于区间长度的区间数. 于是可以考虑分治不要问我怎么想到的 设当前区间为l,r,中点为mid. mx[i]=i~mid的最大值(l<=mid),mid+1到i的最大值(i>mid) mn[i]同理. 分情况讨论: 1.区间最大值和最小值都在左边. 设右端点为j,这…
[51Nod1555]布丁怪 题面 51Nod 题目大意: 给你一个\(n\times n\)的棋盘以及\(n\)个棋子,每个棋子坐标为\((x_i,y_i)\),保证棋盘的每一行或一列都有且仅有一个棋子,问你有多少个正方形框住的棋子数数值上等于正方形的边长. 其中\(1\leq n\leq 3\times 10^5,1\leq x_i,y_i\leq n\). 题解 首先转化一下题面,题面变为: 给你一个长度为\(n\)的数组\(a\),问你有多少个区间\([l,r]\)满足\(\max_{i…
题目描述: 布丁怪这一款游戏是在一个n×n 的矩形网格中进行的,里面有n个网格有布丁怪,其它的一些格子有一些其它的游戏对象.游戏的过程中是要在网格中移动这些怪物.如果两个怪物碰到了一起,那么他们就会变成一个更大的怪物.(谁叫他们是布丁呢?) 据统计,如果每一行每一列都只有一个布丁怪,那么这样的布局是比较吸引玩家的. 所以为了产生多种多样的有趣布局,我们会从一个 n×n 的有趣的地图中选取一个k×k (1≤k≤n)子矩形作为地图,而且这个子地图中恰好有k个布丁怪. 现在请你计算一下一个n×n 的有…
题意简述 开始有无限长的一段格子,有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$个怪兽最多可以覆盖多少个点,…
题解 寻星 题意:给定一个有向带权图,定义从一点到另一点的某条路径长为路径上所有边权的最大值,并给定四个点编号w,t1,t2,t3. 求出一个点s,使它在到t1,t2,t3三点最短路径最大值最大或者根本不存在路径的基础上,到w的最短路径最小. 思路: 本来是要加强数据卡Floyd,但也是来不及了,Floyd无脑跑一遍再枚举即可.注意这是个有向图,而且三体人也看作是人类. #include<cstdio> #include<algorithm> #include<cstring…
一道取证题,一整场比赛,基本就死磕了这一题 写的很乱,因为当时的思维就是那么乱,完全没有注意到出题人的提示, 还没做出来,没有找到关键key 那个人的real name 文档:虎符.note链接:http://note.youdao.com/noteshare?id=3b839a3228f73f74199ff52bf1df8806 拿着这么好用的工具做不出来题...没有取证大师我可能连邮件文件的储存位置都找不到 #希望会了的大佬教教我,也欢迎大家一起来找key -----------------…
(这篇题解可能没什么营养,主要是记录一下我用map乱搞启发式合并的神奇做法) 首先我们知道,我们肯定要用一堆集合维护每一种数当前的位置,并支持合并和数连续出现的段数两种操作 我发现这个东西并不好搞,但是暴力维护是 \(O(n)\) 的 所以我们就要用到启发式合并 启发式合并本身是一个非常naive的trick 我们考虑我们把 \(a\) 数出现的位置集合合并到b数出现的位置集合,相当于插入每一个 \(a\) 所在的位置并更新段数 所以复杂度只与 \(a\) 数出现的位置集合的大小相关 然后我们发…
事实再次向我证明了RP的重要性... 第一题:进制转换 是我最没有把握AC的一道题目却是我唯一一道AC的题目,真是讽刺.看完题目几乎完全没有往正常的解法(取余倒序)去想,直接写了搜索,因为数据范围在2^16,感觉枚举每一位上的数应该就够了,但是在自己的电脑上连样例都用了3.4s,然后想不到任何有效的剪枝,就果断放弃了.最后写完其他三题之后还是回过头看了下这道题,还是没往正常的解法想....结果惊人地AC了...RP真的太重要了. 然后经提醒终于想到了正常一点的解法,查了网上的题解之后开始自己写取…
题目描述 N个布丁摆成一行,进行M次操作.每次将某个颜色的布丁全部变成另一种颜色的,然后再询问当前一共有多少段颜色.例如颜色分别为1,2,2,1的四个布丁一共有3段颜色. 输入输出格式 输入格式: 第一行给出N,M表示布丁的个数和好友的操作次数. 第二行N个数A1,A2...An表示第i个布丁的颜色从第三行起有M行,对于每个操作,若第一个数字是1表示要对颜色进行改变,其后的两个整数X,Y表示将所有颜色为X的变为Y,X可能等于Y. 若第一个数字为2表示要进行询问当前有多少段颜色,这时你应该输出一个…