摘要:
主要学习一下怎么利用sort对二维字符数组排序 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 using namespace std; 5 6 const int maxn = 3e5 + 10; 7 char s 阅读全文
摘要:
所谓区间dp,顾名思义就是在一段区间上的动态规划。它既要满足dp问题的最优子结构和无后效性外,还应该符合在区间上操作的特点。我的理解是往往会对区间进行合并操作。抑或是单个元素(可看成一个小区间)跨区间进行操作。例如括号匹配问题,石子合并问题(通过多次的相邻合并,最后实质上会产生跨区间的合并,如果你把 阅读全文
摘要:
多组测试数据 给定人数与初始位置 名字与指针 环状内每个人出列后,指向位置的人出列,重复此过程。 输出出列次序的因数最大的那个人的名字及因子数 最后的tie应该是平局的意思吧 线段树单点修改 注意出列时总人数减少,每个点对应位置减少(这也是需要使用线段树或者树状数组的原因),求余的时候应该是对小于m 阅读全文
摘要:
题目 题意是说给你一个长为n的序列,有m次操作 序列的值从1~n,且每个数只出现一次 每次操作是将初始序列中的[l, r]区间的数从小到大排序,输出排序后位置p的值与原序列相比是否发生变化 直接上代码 1 #include <cstdio> 2 using namespace std; 3 4 co 阅读全文
摘要:
基于稀疏表(Sparse Table)的RMQ需要先进行复杂度O(nlogn)的预处理,而后在查询[ql, qr]的最值时,计算出最大的满足ql + (1 << bit) <= qr的bit(复杂度O(loglogn)),即可在O(1)时间复杂度内查询,从而可以解决查询次数很多(如大于100万)的R 阅读全文
摘要:
一。概念 线段树是用于处理区间的复杂度为O(log n)一类数据结构。线段树是一棵完美二叉树(区别于完全二叉树)。树上的每个节点维护一个区间,且为父亲节点的区间二等分后的其中一个子区间。 二. 基于线段树的RMQ操作(根据维护的信息不同,线段树还可以实现其他功能) 三. 基于线段树的查询 例如查询区 阅读全文
摘要:
给定长度为n的数列a[]和整数k,求b[i] = min{a[i], ... , a[i + k - 1]}, 复杂度为O(n) 最开始单调队列为空,保证队列中的元素始终保持单调性 为了计算b[0],把0到k-1依次加入队列。在加入i时,当单调队列的末尾的值j满足a[j] >= a[i],则不断取出 阅读全文
摘要:
POJ2559http://poj.org/problem?id=2559 求一系列不等高的柱状体中最大的长方形面积 思路:答案中的长方形必定有至少有一条边与其中一个柱状体的顶边重合。那么我们只需求解对于每个柱状体,它最多能向左右延伸多长。 设当前柱状体下标为j (0 <= j < n) L[i] 阅读全文
摘要:
选择题 6)设F是一个森林,B是由F转换得到的二叉树,F中有n个非终端结点,B中右指针域为空的结点有 n+1 个 解1:不妨假设有m个终端结点,则共有(n+m)个结点,(n+m)个左指针域,(n+m)个右指针域 空右指针域←(空左指针域+空指针域←非空指针域) 问题转化为求解空的左指针域数量和非空指 阅读全文
摘要:
概要:左偏树是具有左偏性质的堆有序二叉树,它相比于优先队列,能够实现合并堆的功能。 先orz国家集训队论文https://wenku.baidu.com/view/515f76e90975f46527d3e1d5.html 左偏树的几个基本性质如下: 4.一棵N个节点的左偏树的距离最多为[log(N 阅读全文