自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

yangzijiangac的博客

记录美好生活

  • 博客(13)
  • 收藏
  • 关注

原创 从入门到头秃练习赛15(初级组)部分题解:

A思路两边之和大于第三边,都是整数的原因,答案为 a+b-1。参考代码:#include <cstdio>#include <algorithm>#include <vector>#include <iostream>#include <map>#include <queue>#include <set>#include <cstring>#include <string>

2020-05-20 08:19:26 280

原创 区间DP

题目设有N堆石子排成一排,其编号为1,2,3,…,N1,2,3,…,N1,2,3,…,N。每堆石子有一定的质量,可以用一个整数来描述,现在要将这N堆石子合并成为一堆。每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和,合并后与这两堆石子相邻的石子将和新堆相邻,合并时由于选择的顺序不同,合并的总代价也不相同。例如有4堆石子分别为 1 3 5 2, 我们可以先合并1、2堆,代价为4,得到4 5 2, 又合并 1,2堆,代价为9,得到9 2 ,再合并得到11,总代价为 4+9+11=244+9+1

2020-05-19 17:28:40 1033

原创 洛谷 P4309 最长上升子序列(平衡树维护)

传送门:题目描述给定一个序列,初始为空。现在我们将1到N的数字插入到序列中,每次将一个数字插入到一个特定的位置。每插入一个数字,我们都想知道此时最长上升子序列长度是多少?输入格式第一行一个整数N,表示我们要将1到N插入序列中。接下是N个数字,第k个数字Xk,表示我们将k插入到位置Xk。(0<=Xk<=k-1,1<=k<=N)输出格式N行,第i行表示i插入Xi位置后序列的最长上升子序列的长度是多少。输入输出样例输入#1:30 0 2输出#1:112思

2020-05-16 10:29:26 398

原创 文艺平衡树:FHQ-Treap 实现区间操作

之前学了FHQ-Treap 但是很生疏,今天就完全自己码一发,熟悉熟悉,调调bug,,熟悉一下代码里面的各种细节问题。因为FHQ-Treap 要实现区间操作,是不能按值分裂的,需要按节点大小分裂,这样我们只需要将节点大小为[l,r]区间的这颗树分解出来,然后进行修改即可。文艺平衡树,是要颠倒 q 次的询问区间,最后输出整个区间,试想一下,如果朴素写法绝对复杂度爆炸,所以用 FHQ-Treap 的操作就很 logloglog 了,虽然常数有点大,但不是问题。讲一下思路(菜鸡的小思路):分裂出包含 [l

2020-05-15 11:17:29 1048

原创 leetcode 1438. 绝对差不超过限制的最长连续子数组

传送门:题意:给长度为 n 的序列 和 限制值 k,求最长的子区间,子区间满足区间中任意两个数的差的绝对值不大于k思路:双单调队列,一个维护当前区间最大,一个维护当前区间最小,如果当前区间最大-最小满足条件,呢么当前区间整体满足条件,否则让单调队列中的除去当前存在的左端点即可参考代码:class Solution {int ans;int q1[100005], q2[100005], a[100005];void solv(int n, int k){ int head1

2020-05-09 22:06:10 838

原创 bbb的快读模板

ios对cin的加速欺骗了我,md数据量稍微大一点就TLE了,不太靠谱,搞一波bbb群主的快读板子,用于对付卡常用,虽然一般感觉用不到叭,sacnf够用了,但搞上一波没啥坏处using namespace std;typedef long long ll;#define repi(i,b,e) for (int i = (b), _ = (e); i < _; ++i)#define rep(i,b,e) for (int i = (b), _ = (e); i <= _; ++i)

2020-05-08 21:55:57 1788 2

原创 文艺平衡树(Fhq Treap)

传送门:文艺平衡树首先要阐述一点,Fhq Treap的按大小分裂是支持区间操作的,而按值分裂是不支持区间操作的。Fhq Treap的分裂方式:按权值分裂按大小分裂按权值分裂:根据插入点的权值,将树按w为边界,分裂为两颗树,一颗树的权值大于w,一棵树的权值小于等于w,这样再把新节点合并进去,就可以维护树的平衡按大小分裂:根据插入点的节点大小,将树按big为边界,分裂为两颗树...

2020-05-07 22:07:35 1431 2

原创 AtCoder 4351前缀和+二分+求顺序对数

题意:给一个长为N的序列,求出所有子区间中位数组成的新序列的中位数思路:首先我们需要找到这个题的可二分性:我们可以知道中位数的性质:在序列中,比中位数小的个数有差不多N/2个,呢么比中位数大的差不多也有N/2个,由此我们找到了可二分性,所以我们就可以二分答案得到序列中所有中位数比mid大的区间个数:(1)(1)(1) 首先利用前缀和处理数组,将不小于mid的赋为1,其余赋为-1...

2020-05-05 11:14:29 291

原创 2020NYIST个人积分赛第一场 C(动态开点线段树)

题意:晚上有n个亮着的灯泡,标号从1到n。现在存在2种操作,如下:操作1,关掉标号 [l,r] 区间的灯 操作2,打开标号 [l,r] 区间的灯下面有q次询问,每次询问执行其中一种操作,询问格式,l,r,k,k为执行操作种类。对于每次询问回答当前开着的灯的数量。思路:普通线段树会炸,需要用动态开点线段树来写,离散化感觉不太好写。我们用动态开点线段树,求询问区间内的关灯数量,然后用...

2020-05-03 19:20:03 322 2

原创 SPOJ DQUERY(主席树)

传送门题意:给长度为n的序列,询问区间中的元素个数(去重后的元素个数),m次询问,n在[1,3∗104],m在[1,2∗105]n在[1,3*10^4], m在[1,2*10^5]n在[1,3∗104],m在[1,2∗105]。思路:用主席树去写,每颗树存从[1,i][1,i][1,i]区间的信息,我们把这颗树中出现多次的数去重,只保留最每个数在最右边出现的位置信息,其余位置的sum为0,...

2020-05-03 19:17:18 235

原创 Fhq Treap 实现(二叉堆)优先队列

经验证:Fhq Treap根据二叉堆性质实现的优先队列,是没有问题的 (因为我已经试过了一些题)我们如想要更改出队优先级,其实很简单,我们只需要改变递归的方向即可,一直向左递归到最终的叶子节点,是最小,同理向右是最大封装优先队列函数:struct queue{ const int base = 131; int su = 1; int ran() {...

2020-05-03 11:13:21 186

原创 Fhq treap P3369 【模板】普通平衡树

传送门:学了Fhq Treap之后,我深深的了解到 Fhq Treap的牛逼,因为上一张学了替罪羊平衡树,码量很大,操作繁琐,不支持提取区间信息,虽然简单理解,但是Fhq也很好理解呀,而且码量不大,能快速维护一颗平衡树,支持提取区间信息Fhq Treap 的骚操作:分裂合并分裂:分裂操作其实很简单理解,把一颗平衡树按照插入的值为界限,分裂成两棵树,记录两个树的根节点即可合...

2020-05-02 17:59:50 223

原创 替罪羊树

替罪羊树入门:以洛谷模板题为例:普通平衡树这题正解是替罪羊树,呢么什么是替罪羊树?替罪羊树其实就是一颗平衡树,但是我们要如何去维护树的平衡呢?俗话说,暴力即优雅,替罪羊树,是通过重新构造不平衡的子树来进行维护树的平衡的替罪羊树的部分:插入操作:插入节点((检查树的平衡(不平衡,则重构树(中序遍历,分治重构树,),更新树的节点信息)))删除操作:删除节点((检查树的平衡(不平衡...

2020-05-02 08:45:39 337

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除