线段树
文章平均质量分 74
Drenight
Dream in the night.
展开
-
D - Mayor's posters POJ - 2528(区间覆盖/线段树/漂浮法)
对一个10000000长度的区域用线段去覆盖,问你最后能看到几条线段分类在线段树,也是线段树被卡的第一题,等学会了线段树做法在更吧,在poj上看到有人提到漂浮法,试了一发,感觉好神奇,贴代码:#include#include#include#include#include#includeusing namespace std;int t, n, a, b;#defin原创 2017-03-14 20:47:49 · 653 阅读 · 1 评论 -
895E - Eyes Closed 线段树维护区间线性变换 好题
考虑左区间中的任意数x,令len1为左区间长度,sum1为左区间的期望和经过操作1,x的期望会变为x*(len1-1)/len1+sum2/len2*(1/len1)这个变化相当于y=kx+b,因此可以用线段树维护乘法和加法要注意的是pushdown的时候子节点的加法受到父节点乘法的影响#include //#pragma comment(linker, "/STACK:1原创 2017-12-07 20:09:25 · 327 阅读 · 0 评论 -
线段树区间加板子
#include#include#include#include#include#includeusing namespace std;#define maxn 101000#define maxq 101000int Sum[maxn << 2];int Add[maxn << 2];int n, t, q;int a, b, c;int ans;void push原创 2017-11-24 00:22:35 · 267 阅读 · 0 评论 -
BZOJ1818 [Cqoi2010]内部白点 扫描线/线段求交
毫无头绪。。hint了一波瞄到了用扫描线做线段求交想了想开始码。。过样例之后谜之wa估计是加line的时候没把点做第二维排序,line不是一段一段进去的,加上就过了//#include #pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #includ原创 2017-12-02 17:33:38 · 252 阅读 · 0 评论 -
Query on a string 线段树
动态维护s1的所有区间内s2的个数开始的想法是线段树区间保存有多少个完整的s2串,当成区间合并做,暂时没调出来bug:#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define ll long l原创 2017-09-18 23:06:03 · 352 阅读 · 0 评论 -
Codeforces Round #424 E. Cards Sorting 线段树/数据结构瞎搞/模拟
第一眼感觉是个水题过程确实也无脑,但是细节麻烦。。。就是循环找最小值,删除,算步数而已不过转移位置的计算我试了好几种方法,才写出一个对的。。提交时一度抱着求求你让我过吧这种心态(#include#include#include#include#include#include#include#include#include#include#include原创 2017-08-15 00:22:52 · 277 阅读 · 0 评论 -
Codeforces-834D The Bakery 线段树优化DP
给n个数,让你分成k个子段,让每个子段中不同数字个数的和最大dp[i][j]:前i个元素分成j段的最大和考虑第j段,他的开头为k,那么dp[i][j]=max{dp[k][j-1]+sum[k+1][i] | 0节点i维护dp[k]+sum(k+1,i),0#include#include#include#include#include#include#includ原创 2017-08-14 21:15:12 · 340 阅读 · 0 评论 -
F - 八苦を滅した尼公 POJ - 2763 线段树LCA
//#include//#pragma comment(linker, "/STACK:1024000000,1024000000") #include#include#include#include#include#include#include#include#include#includeusing namespace std;#define ll long lon原创 2017-07-23 14:44:00 · 227 阅读 · 0 评论 -
Matrix POJ - 2155 线段树套线段树模板
//#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define ll long long#define pb push_backconst int maxn=1e3+3;int ans;int原创 2017-07-15 13:42:20 · 337 阅读 · 1 评论 -
覆盖的面积 HDU - 1255 扫描线/二次覆盖
#includeusing namespace std;#define ll long longconst int maxn=1010;int n;double X[maxn<<1];struct Edge{ double l,r,h; int v; Edge(){}; Edge(double a,double b,double c,int d):l(a),r(b),h(原创 2017-06-04 01:41:03 · 225 阅读 · 0 评论 -
Atlantis HDU - 1542线段树/扫描线/面积并
给出一堆矩形的左下右上坐标,问矩形面积并扫描线的本质就是把图形分层,每层的边界就是一条“扫描线”这里的做法是把图形按照y坐标分成一条条等高的长条,让长条不断加入我们的图形,即扫描的过程{对于每一个长条,它对图形的影响取决于它的长度,它的高度还有它是组合图的入边还是出边(取决于我们扫的方向,这里从下往上扫)那么我们维护的信息就是这个时间点,x轴上被覆盖的总面积,这个数据的原创 2017-05-15 22:24:12 · 205 阅读 · 0 评论