线段树
倔强的blackatao
这个作者很懒,什么都没留下…
展开
-
【线段树】Hdu3974 Assign the task(dfs序建简单线段树)
题目: 公司里有从1到n共n个成员,除了董事长,每个人都有唯一一个直接上司。每个人都有若干下属,自己下属的下属仍然算作是自己的下属。当给某个成员分配工作时,该成员和其所有下属会立刻丢弃原来的工作,执行当前的工作。现在有两种操作(1)C x 查询成员x当前的工作内容(2)T x y为成员x分配新的任务y。对于每次查询操作输出相应的结果 #include <iostream> #include <cstring> #include <cstdio> #include <原创 2020-08-25 22:26:40 · 136 阅读 · 0 评论 -
【线段树】Hdu 4027 Can you answer these queries?
题意: 有n艘战舰,每艘战舰的防护罩都有一定的能量,我军有秘密武器,每轰一次,一个区间内的战舰防护罩将为原来能量的开方,查询的则是这个区间内战舰防护罩的能量之和。 解析:开根号开到1就可以停止了 #include <bits/stdc++.h> using namespace std; #define pb push_back #define mp make_pair #define fi first #define se second typedef long long ll; typedef原创 2020-08-25 17:27:25 · 84 阅读 · 0 评论 -
【线段树】Zoj 1610 Count the Colors
题意: 在一条线上绘制一些彩色的线段,某些先前绘制的线段可能会被后续的线段覆盖。 您的任务是计算最终可以看到的不同颜色的分段的数量。 解析: 用点 i+1 来表示线段[ i , i+1 ] #include <iostream> #include <cstring> #include <cstdio> using namespace std; const int maxn = 8000 + 10; int t,m,n,a,b,c,q,k; string s; int su原创 2020-08-25 17:09:58 · 121 阅读 · 0 评论 -
【线段树+离散化】Poj 2528 Mayor‘s posters
题意: 给出一些区间,要按顺序将这些区间贴上海报,因此有些海报会被覆盖,求最终能看到多少种海报,只能看到一部分的也算。 解析: 因为一开始墙是空的,所以就不用build了,初始化sum数组都等于-1就好。因为没有求和求最大值之类的,只是求最后能显示在墙上的海报个数,所以也不用push_up,运用lazy-tag方法push_down往下更新就好,最后query对整体查询即可。 #include <iostream> #include <cstring> #include <cs原创 2020-08-25 16:09:32 · 82 阅读 · 0 评论 -
【线段树】 hdu1698 Just a Hook
区间修改区间查询模板题 稍微有点变形, 一开始数组全是1,然后每次修改不是增加或减少,而是将那一段区间都变成1或2或3 #include <iostream> using namespace std; const int maxn = 1e5 + 10; int t,m,n,a,b,c,q; long long sum[maxn << 2],add[maxn<<2]; void push_up(int rt){ sum[rt] = sum[rt<<1] +.原创 2020-08-21 23:44:04 · 75 阅读 · 0 评论 -
【线段树】hdu1166 敌兵布阵 (单点修改区间查询模板)
#include <bits/stdc++.h> using namespace std; #define pb push_back #define mp make_pair #define fi first #define se second typedef long long ll; typedef pair<int,int> pii; typedef double db; const ll mod=1000000007; const int maxn=5e4+10; cons.原创 2020-08-21 23:36:30 · 96 阅读 · 0 评论 -
hdu 1754 I Hate It (树状数组求区间最大和)(线段树单点修改)
很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当中,分数最高的是多少。 这让很多学生很反感。 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。 Input 本题目包含多组测试,请处理到文件结束。 在每个测试的第一行,有两个正整数 N 和 M ( 0<N<=200000,0<M<5000 ),分别代表学生的数目和操作的数目。 学生ID编号分别从1编到N。 第二行包含N个整数,代表这N个学生的初始成绩,原创 2020-08-11 20:59:58 · 123 阅读 · 0 评论