树链剖分边权 poj 3237

#include <cstdio> #include<string.h> #include<algorithm> #include<iostream> using namespace s...

2019-06-19 18:32:52

阅读数 1

评论数 0

权值线段树模板

#include <bits/stdc++.h> using namespace std; const int maxn=1e6+10; const long long mod=1e9+7; long long sum[maxn*4],val[maxn*4]; int...

2019-06-16 16:31:39

阅读数 4

评论数 0

C. Electrification

思路借鉴:https://blog.csdn.net/qq_43506138/article/details/90990594感谢大佬 对于一个长度为n的序列k=n-1,那么对于第k+1即第n个最小就是取点为区间中最大值与最小值的和出2((max+min)/2),当k小于n-1时,我们可以发现,...

2019-06-07 16:56:56

阅读数 13

评论数 0

hdu 4578 Transformation

从题面可以推断,如果一个区间中的值很可能为等于同一个值,即有操作涉及,对某个区间设为t之类,就很可能存在一个区间,区间值全部相等,就可以用线段树做标记,标记区间值,如果,区间中有值不相等则对其赋值为-1,注意如果区间值相等修改,或者查询时需要下推标记。 #include<bits...

2019-06-07 14:56:57

阅读数 9

评论数 0

线段树 最大连续区间 hdu1540

#include<bits/stdc++.h> using namespace std; int li[100000*4],ri[100000*4],mi[100000*4]; void pushup(int i,int l,int r) { int mid=l...

2019-06-05 20:28:05

阅读数 7

评论数 0

Codeforces Round #563 (Div. 2) Ehab and the Expected XOR Problem

数组部分异或和与前缀疑惑和之间的关系(a为原数组,b为a的前缀异或和数组): al^al+1^al+2^^^ar=bl-1^br 因此题目中不允许al^al+1^^^ar等于x且不可等 于0,因此就可转换为bi^bj=0且bi^bj=x不可出现。 再转换一下,就可以得到bi或者bi^x只能...

2019-06-05 19:23:32

阅读数 4

评论数 0

线段树区间染色 map,vector离散化 poj2528

#include<map> #include<vector> #include<iostream> #include<cstdio> #include<cstring&am...

2019-05-31 12:58:27

阅读数 4

评论数 0

2019 东北赛

链接:https://vjudge.net/contest/304079 B #include <bits/stdc++.h> using namespace std; long long gcd(long long a,long long b) { ...

2019-05-30 11:09:10

阅读数 15

评论数 0

树上dp

hdu 4123 树的直径+ 单调队列 + 尺取 50000个点的树,每个点有一个人,每个人会跑到离自己初始点距离最远的点上,这个距离为distance[i]。给你500个查询,对于每个查询Q,找一段连续编号的人,比如[left,right],满足 max( distance[i] i∈[le...

2019-01-17 18:50:46

阅读数 32

评论数 0

找一个字符串有多少不同子串(trie树)

感谢铭哥提供的思路:https://blog.csdn.net/DT2131/article/details/54936247 找一个字符串有多少不同子串,利用trie树性质,即为trie树上有多少个不同的节点。 代码: #include <iostream&...

2019-01-16 17:41:42

阅读数 77

评论数 0

树上倍增

对于在树上查找某点的祖先,如果简单的查找时间复杂度是o(n),那么,我们可以通过倍增算法优化这个时间复杂度,将每次跳一个点变成,每次跳2的i次方个点,也就是倍增优化这个过程,将时间复杂度变为o(logn)。 如何进行倍增? 首先我们需要进行一遍dfs初始化,处理出每个点的深度。根据深度,初始化...

2019-01-16 16:30:01

阅读数 25

评论数 0

洛谷 工艺 最小/大表示法

最小表示法的是求字符串s的字典序最小的循环同构,最大表示法是求字典序最大的循环同构。 循环同构是对于一个字符串,可从字符串串首选择字符,移动到串尾,或者从串尾,平移到串首。 以最小表示法为例: 对于一个字符串,设两个指针i,j,第一个指向s[0],第二个指向s[1],并且保证i,j绝对不相同...

2019-01-16 10:48:55

阅读数 26

评论数 0

树链剖分模板

树链剖分: 通过两次dfs,分别对每个节点为根节点的树的节点个数,重点,父亲节点,深度与重链头结点,在线段树上对应的id,每个id对应的原本序列rk,进行初始化。 这样就完成了树链剖分。剩下的就是在在剖分过得树上进行求和,更新操作。 洛谷p3384 #include &l...

2019-01-11 18:51:05

阅读数 55

评论数 0

codeforces 558E

计数排序: 计数排序就是对于一个已知序列找出序列最大值,最小值后。开辟一个大小为max-min+1的辅助数组,在辅助数组上对已知序列进行计数。即fuzhu[a[i]-min]++。然后再在愿数列上按照一定顺序(降序/升序)进行赋值。 for(int i=0,j=0;i<...

2019-01-11 10:59:15

阅读数 43

评论数 0

codeforce 556E

#include <bits/stdc++.h> using namespace std; map<pair<int,bool>,int>mp; //此题向上吃只与...

2019-01-10 19:45:11

阅读数 46

评论数 0

区间众数问题,线段树

区间众数,利用线段树,维护区间众数转换的平度序列。 线段树记录区间最大值,即为连续区间众数连续个数。 平度序列例如: 1 1 1 1 2 3 3 3  1 2 3 4 1 1 2 3 代码: #include <iostream> #inc...

2019-01-08 20:27:45

阅读数 220

评论数 0

nefu 复读机、分块加二分

有两个操作,1操作,对于x,y区间内的值全部加1。2操作,求出第一次复读y次跟最后一个复读y次的复读机次数。 a存复读机原数组,b存分块数组,对于分块数组每个进行排序操作,使区间有序,每次查询对于第一个区间查找到最后一个区间,进行二分查找。  更新时则对两个区间都进行更新。也可对a更新后再对B...

2019-01-08 20:07:45

阅读数 32

评论数 0

牛客网练习赛36 E Rabbit的机器人 思维+二分

转载自牛客网题解: 链接:https://ac.nowcoder.com/acm/contest/328/E 来源:牛客网   题目描述 xxx给Rabbit买了一个机器人,机器人只能在一个直轨道上行走,直轨道由无限多个方格组成,且每个方格按顺序编号,‘0’号方格右侧编号为正,‘0’号方格左...

2019-01-08 19:20:51

阅读数 32

评论数 0

牛客网练习赛36 Ribbit的数列 分块

题目描述  Rabbit得到了一个长度为N的数列(数列编号从0到N−1)。数列中每个数vali满足1<=vali<=C。 初始时数列中每个数均为1,现在Rabbit要对这个数列进行Q次操作,每次操作给出四个数:X Y A B,首先查询数列中值为X的个数...

2019-01-08 19:11:02

阅读数 108

评论数 0

牛客网练习赛36 Rabbit的蛋糕(叉积模板)

转载自牛客网练习赛36题解:  #include <cstdio> #include <bits/stdc++.h> #include <map> #includ...

2019-01-08 19:04:16

阅读数 54

评论数 0

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