线段树
左佥都御史
这个作者很懒,什么都没留下…
展开
-
D. Petya and Array(权值线段树or树状数组),模仿逆序对
知识点:对于求逆序对的方法的扩展。 题目: 给定一个序列,要求得到区间和小于x的总序列数 方法:和求逆序数的方法差不多。sum[i]−sum[j]<k=>sum[j]>sum[i]−ksum[i]-sum[j]<k =>sum[j]>sum[i]-k sum[i]−sum[j]<k=>sum[j]>sum[i]−k 所以只需要求 i>j同时 满足上述条件的 <i,j>对。思路挺清晰的。但是难点在于考虑一些细节和坐标的离散化。 1原创 2020-05-22 18:07:18 · 218 阅读 · 0 评论 -
hdu5475-惊了-线段树或者暴力(有时间看)
https://vjudge.net/contest/168469#problem/H 看了别人的写法,是用线段树。(俺不会。。) 或者暴力。 真不知道这种暴力为啥能过,很奇怪。。囧。#include <cstdio> #include <cstring> #include <algorithm> #include <iostream> using namespace std转载 2017-06-30 20:31:31 · 221 阅读 · 0 评论 -
Codeforces Round #424 (Div. 2, )-树状数组|线段树-E. Cards Sorting
、http://codeforces.com/contest/831/problem/E 给定一副扑克,规则如下 1 输入的数组是从顶到尾的顺序。 2 每次从顶上拿扑克,当这个值在当前排堆中是最小的(可能会重复,不过没关系),我们就把他抽出来。然后继续。如果不是,我们就把他放在牌底,直到所有的牌全部都拿掉之后就完事了,问你他所需要的操作数是多少。 数据范围 扑克数量 100000。 我们可原创 2017-07-20 13:18:31 · 370 阅读 · 1 评论 -
hdu1166-分治&线段树-敌兵布阵
https://vjudge.net/problem/HDU-1166 单点更新,区间查询。#include <bits/stdc++.h> /* 分治的思想,维护一个满二叉树。 每个点 保存两个点,左面的和右面的 */ using namespace std; const int maxn=50007; struct Node { int l,r; int sum; }node[原创 2017-08-12 21:40:34 · 241 阅读 · 0 评论 -
HDU1754-线段树(点更新区间查询)-I Hate It
https://vjudge.net/problem/HDU-1754 注意,1每次更新的时候要维护最大值 2 查询有三种情况。每种只能进行一个#include <bits/stdc++.h> using namespace std; const int maxn=200006; struct Node{ int l,r; int v;//极值 }node[maxn*4];原创 2017-08-14 12:58:50 · 171 阅读 · 0 评论 -
hihocoder1586-2017acm北京网络赛9&线段树&思维&板子- Minimum
http://hihocoder.com/problemset/problem/1586 线段树,单点更新,区间查询极值。 给你一个数组, 有下面操作 输入 a b c 若为1,那么再b-c中找两个数,让他们的乘积最小。 若为2,那么把 a[b]=c; 乘积最小这个。。 因为有正负数。所以需要 min*min1 max1*max1 max1*min1 的最小值。。。#includ原创 2017-09-25 20:45:55 · 360 阅读 · 0 评论 -
Codeforces Round #442E-dfs序&线段树的区间更新区间查询-Danil and a Part-time Job
http://codeforces.com/contest/877/problem/E 给定一个树,他的每个节点都是一个灯,初始给定各个灯的明暗程度。 有两种操作 ① 把当前节点的子树上的灯的开关全按一遍 ② 查询 v节点的子树上灯开的情况。不会线段树啊 ,我就想着这道题用树状数组不太好写。粘了一个 区间更新区间查询操作的函数,造成板子把,挺好用的。 ② 开始写dfs序竟然写错了 亲,df原创 2017-11-10 16:23:27 · 208 阅读 · 0 评论 -
Wannafly挑战赛4-dfs序&线段树|搜索&思维|BIT-树的距离
https://www.nowcoder.com/acm/contest/35/D dfs序那个方法是标准做法。但是不知道怎么去用线段树搞。 给定一个树(根为1),然后给你 x和k,要求你求x为根的子树中 距离x大于等于k的点的 和。 一看子树,就知道是dfs序。关键是如何搞线段树orBIT ,把距离根节点的值 映射到 线段树上后(线段树的下标意义代表时间。) 维护最大值和最小值和 和(即线原创 2017-11-30 14:12:41 · 246 阅读 · 0 评论 -
ZOJ1610-Count the Colors-线段树区间更新&暴力
链接:https://zoj.pintia.cn/problem-sets/91827364500/problems/91827365109 Painting some colored segments on a line, some previously painted segments may be covered by some the subsequent ones. Your task ...原创 2019-09-08 21:57:22 · 141 阅读 · 0 评论