二叉堆
文章平均质量分 53
lemondinosaur
转圈圈 不停转圈圈 然后摔倒
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
#贪心,堆,RMQ#洛谷 2048 JZOJ 2226 超级钢琴
题目分析考虑一个maxx(x,l,r)maxx(x,l,r)maxx(x,l,r)表示以左端点为xxx,右端点在[l∼r][l\sim r][l∼r]的范围内的最大值,那么维护的最大值也就是s[mx]−s[l−1]s[mx]-s[l-1]s[mx]−s[l−1],而只有mxmxmx是变动的,所以可以用RMQ去求解,把这个三元组扔进一个大根堆里面,跑kkk次,但是处理完一个三元组后需要把它拆成...原创 2019-11-02 10:12:36 · 316 阅读 · 0 评论 -
2018年11月2日 提高组&2018.08.18【2018提高组】模拟A组
解题报告前言JZOJ 5829 string题目分析代码JZOJ 5830 water题目分析代码JZOJ 5831 number题目分析代码前言咕咕了快一年了呀JZOJ 5829 string题目给定一个由小写字母组成的字符串sss。有mmm次操作,每次操作给定3个参数l,r,xl,r,xl,r,x。如果x=1x=1x=1,将s[l]∼s[r]s[l]\sim s[r]s[l]∼s[...原创 2019-08-11 21:14:48 · 451 阅读 · 0 评论 -
#trie,堆#洛谷 5283 JZOJ 6106 BZOJ 5495 异或粽子
题目分析首先做异或前缀和,然后可以把此问题转换成求两两xor的前k大,那么每次若当前堆顶为第ttt大,把当前trie中的第t+1t+1t+1大插入堆中,在trie中类似求第kkk大的方法求出答案代码#include <cstdio>#include <cctype>#include <queue>#define rr registerusin...原创 2019-08-24 08:52:12 · 204 阅读 · 0 评论 -
USACO 3.2
解题报告洛谷 1134 阶乘问题代码(暴力)洛谷 2727 01串代码(动态规划)洛谷 2728 纺车的轮子代码(暴力)洛谷 2729 饲料调配代码(暴力+柯西不等式)洛谷 2730 魔板代码(广搜+哈希)洛谷 1828 香甜的黄油代码(dijkstra+堆优化)洛谷 1134 阶乘问题代码(暴力)/*ID:lemondi1LANG:C++TASK:fact4 */#include...原创 2019-08-11 08:28:10 · 298 阅读 · 1 评论 -
2019.08.09【NOIP提高组】模拟 A 组
解题报告JZOJ 6286 走格子 洛谷 4442 Portal JZOJ 5781 秘密难题分析代码JZOJ 6287 扭动的树题目分析代码JZOJ 6288 旋转子段题目分析代码JZOJ 6286 走格子 洛谷 4442 Portal JZOJ 5781 秘密难题题目分析一开始想着用一个栈存下可以放传送门的地方,结果思路错误WA掉了应该要建边跑最短路,我用的是DIJKSTRA+堆优...原创 2019-08-09 22:28:28 · 161 阅读 · 0 评论 -
2019.08.07【NOIP提高组】模拟 A 组
解题报告JZOJ 6275 小L的数列题目分析代码JZOJ 6274 梦境题目分析代码JZOJ 6276 树 JZOJ 100019 A题目分析代码JZOJ 6275 小L的数列题目分析用矩阵乘法递推f1∼fkf1\sim fkf1∼fk的系数,就AC了,时间复杂度O(k3logn)O(k^3log n)O(k3logn)代码#include <cstdio>#in...原创 2019-08-07 22:02:47 · 398 阅读 · 0 评论 -
#堆#洛谷 4597 CF13C Sequence
题目给定一个序列,每次操作可以把某个数+1-1。要求把序列变成非降数列。而且要求修改后的数列只能出现修改前的数。分析对于每一个位置,若不合法,那么肯定是减少前面最大的与其的绝对值,若增加,其实和减少是互补的,所以感性理解就是先把该数插入大根堆,然后若大根堆的堆顶超过该数,那么把堆顶改为这个数,我太菜了,应该还是不会证明了呀代码简短,就不贴了...原创 2019-05-10 22:28:59 · 203 阅读 · 0 评论 -
#dijkstra,二叉堆#洛谷 5060 旅行
题目找出一条最短路径,使答案为PPP的倍数分析那么要用dis[x][w]dis[x][w]dis[x][w]表示走到第xxx个点时最短路径 mod ppp为w的最短路径,那么其实只需要一个dijkstra+堆优化即可,但是毒瘤出题人卡STL,于是手写堆,但是我太菜了,总是T掉一个点,所以只能开O2了。代码#include <cstdio>#include <cct...原创 2019-04-07 11:01:44 · 231 阅读 · 0 评论 -
#二叉堆 or 并查集 and 贪心#poj 1456 uva 1316 Supermarket
题目有NNN个商品,收益PiPiP_i,和过期时间 DiDiD_i,一旦超过了过期时间,商品就不能再卖,问最大收益。分析(二叉堆)可以按过期时间从小到大排序,扫描每个商品,建小根堆,存收益;如果过期时间超过堆的个数,那么直接插入堆,等于堆的个数,那么需要与堆顶比较出较大的为堆顶。时间复杂度O(nlogn)O(nlogn)O(nlogn)代码#include &l...原创 2018-08-20 11:57:20 · 281 阅读 · 0 评论 -
2018年11月1日提高组
解题报告前言JZOJ 3927 可见点数题目分析代码JZOJ 3928 射击题目分析代码JZOJ 3929 创世纪题目分析代码后续前言JZOJ 3927 可见点数题目(洛谷 2158仪仗队)分析(∑i=2nphi(i)×2)+1(\sum_{i=2}^nphi(i)\times 2)+1(i=2∑nphi(i)×2)+1,用线性筛解决代码#include <cstdi...原创 2018-11-01 15:58:34 · 264 阅读 · 0 评论 -
2018_9_8 模拟题
前言:比较OTLJZOJ 3470 最短路题目给出一个nnn个节点,mmm条边的有向图,并且有kkk个点必须走过,问从起点sss到终点ttt的最短路径分析跑kkk遍spfaspfaspfa,在起点跑一次spfaspfaspfa,然后剩下的其实就是深搜或者状压了(我用了状压),时间复杂度O(k×常数×E+211×112)O(k×常数×E+211×112)O(k...原创 2018-09-08 15:39:33 · 529 阅读 · 0 评论 -
2018年10月30日普级组
解题报告前言小X的加法难题分析代码小X的密码破译题目分析代码小X的液体混合题目分析代码(小题大做的压位快速幂)小X的AK计划题目分析代码后续前言结果更正结论:生于忧患,死于安乐小X的加法难题分析简单字符串处理代码#include <cstdio>#include <cstring>#define rr registerusing names...原创 2018-10-31 10:00:50 · 248 阅读 · 0 评论 -
2018_9_15 模拟赛
前言:OTLJZOJ 5461 购物题目有m块钱,k张优惠券,n个物品每个物品原价PiPiP_i元,优惠价QiQiQ_i元,问最多可以买多少个物品(优惠券每个物品最多使用一次)分析kkk张优惠券能用完肯定尽量用完,所以可以想到维护一个以优惠差值的大小为顺序的堆,首先先插入优惠价最小的kkk个商品,然后不断地把堆中的商品变成原价或把新的商品变成优惠价,其实就是运用了贪...原创 2018-09-15 14:39:38 · 454 阅读 · 0 评论 -
(洛谷 1090 ssl 1040)合并果子
题目描述多多在合并果子时总共消耗的体力等于每次合并所耗体力之和。因为还要花大力气把这些果子搬回家,所以多多在合并果子时要尽可能地节省体力。假定每个果子重量都为1,并且已知果子的种类数和每种果子的数目,设计出合并的次序方案,使多多耗费的体力最少,并输出这个最小的体力耗费值。分析:例如1 2 9 1和2合并成3 3和9合并成12 3+12为最小耗费值于是就想到了一种朴素算法,快排一次...原创 2017-12-22 19:33:50 · 475 阅读 · 0 评论 -
SSL 1411 洛谷 2085 信息学奥赛一本通 1370 最小函数值#堆#
题目求前m个最小函数值分析用堆实现,首先把每一种函数的最小值(x=1)加入堆,再把这种函数增加1。优先队列STL代码#include &amp;lt;cstdio&amp;gt;#include &amp;lt;cctype&amp;gt;#include &amp;lt;queue&amp;gt;#define M 10原创 2018-03-10 15:44:00 · 816 阅读 · 0 评论 -
#堆#JZOJ 2152 终极数
给定一个长度为n的序列a,试求出对于序列a的每一个前缀的终极数x,使得 最小 首先这道题比较搞事。 一开始还是一脸懵逼的 然后后来发现就是求1——i(i&lt;=n)的中位数,这几个数的中位数 详情看代码解析#include &lt;cstdio&gt;#include &lt;algorithm&gt;using namespace std;int a[500001]...原创 2018-02-01 21:43:30 · 256 阅读 · 0 评论 -
#堆#JZOJ 1478 堆排序
首先有两种操作:上升,下降。随便举个例子。 (只是比如,不考虑顺序) 最后 输出1 然后 最后以此类推over代码如下#include &amp;lt;cstdio&amp;gt;#include &amp;lt;algorithm&amp;gt;using namespace std;int a[200001],n;voi原创 2018-01-31 17:07:49 · 338 阅读 · 0 评论 -
#堆#(洛谷 3378)堆
操作1: 1 x 表示将x插入到堆中操作2: 2 输出该小根堆内的最小数操作3: 3 删除该小根堆内的最小数分析:运用了堆的思想。对于蒟蒻来说优先队列真是个好东西。#include <cstdio>#include <queue>using namespace std;priority_queue<int>q;int n;int m...原创 2017-12-23 09:57:58 · 316 阅读 · 0 评论
分享