首页 > TAG信息列表 > 树求
[板子]线段树求逆序对
RT,板子题不会像题解一样细讲,只是记录一下,以防考试板子打错 这棵线段树是一棵权值线段树! #include <bits/stdc++.h> using namespace std; const int N = 500000; typedef long long LL; int n; int m; LL ans; int a[N + 30]; int b[N + 30]; struct ST { int l, r; LPOJ3264线段树求最值
刚开始还觉得有点怪怪的。因为想着如果每个树只是单纯地记录它所在的区间的话会不会有不在区间内的数据给更新了,但是我好像是傻掉了因为如果有这种情况出现的话在父亲节点就会分成l,mid和mid+1,r两个区间查找,当节点区间和查找的区间完全吻合时就ok了。 这道题没有修改,连懒标记都不POJ - 2299 - Ultra-QuickSort(线段树求逆序数+离散化)
题目链接:https://vjudge.net/contest/358908#problem/H 题目大意:给你一个序列,问你这个序列经过冒泡排序形成的非递减序列所需要的次数 很经典的线段树求逆序数的题,对于序列中的一个数字来说,把他移动到在非递减序列中的位置的交换次数就是他前面 比他大的数字的数目,至于每次交线段树求后继+环——cf1237D
/*首先开三倍消环(两倍是不够的),倒序求值,线段树找一下后继即可 */#include<bits/stdc++.h>using namespace std;#define N 300005int n,a[N],ans[N];#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1int Max[N<<2],Min[N<<2],pos1,pos2;void build(int l,int r,int rt)E - Tunnel Warfare (线段树求最长连续区间)
题目链接:https://vjudge.net/contest/332656#problem/E 思路: lmax 记录左边开始的最大连续区间, rmax 记录右边开始的最大连续区间 然后维护这两个值就可以了 主要是利用了线段树 (nod<<1) 、 ((nod<<1)+1) 所记录的区间是连续的特点 具体的解释还是看代码注释吧 1 #in主席树求区间内不同数字的个数
主席树求区间内不同数字的个数 例题:[SDOI2009]HH的项链(然而我的主席树无论如何都会被加强的数据卡到72分) 题目搬运: HH 有一串由各种漂亮的贝壳组成的项链。HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义。HH 不断地收集新的贝壳,因此,SPOJ - DQUERY (主席树求区间不同数的个数)
题目链接:https://vjudge.net/problem/SPOJ-DQUERY 题目大意:给定一个含有n个数的序列,有q个询问,每次询问区间[l,r]中不同数的个数。 解题思路:从左向右一个一个将该数字处在的位置添加到主席树中 如果该数字前面未出现过,则在此版本的线段树中的该条链加1,如果该数字已经出现过了,则在2019计蒜之道复赛 A 线段树求最长升子序列方案数
2019计蒜之道复赛 A 线段树求最长升子序列方案数 题意:给定长度为 n 的数列 a,显然这个数列有很多最长上升子序列,我们等概率地取出一个最长上升子序列,求每个数被选中的概率,对 998244353 取模。 链接:https://nanti.jisuanke.com/t/39611 题外话:勉强混了个前400拿T恤,中间麻将题不知道为线段树求面积并,面积交,周长
http://acm.hdu.edu.cn/showproblem.php?pid=1542 面积并 1 #include<bits/stdc++.h> 2 #define maxn 100005 3 #define lson l,mid,rt<<1 4 #define rson mid+1,r,rt<<1|1 5 #define pb push_back 6 using namespace std; 7 8 double tree[maxn<<线段树求逆序对
前言 一直对线段树没有感觉,只会打板子,今天测试彻底被虐惨了,决定好好学习线段树,求逆序对个数是线段树的一个经典问题,那么从它开始吧。 题目描述 猫猫TOM和小老鼠JERRY最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计。最近,TOM老猫查阅到