![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线段树
文章平均质量分 79
zhhx2001
这个作者很懒,什么都没留下…
展开
-
hdu4897(树链剖分)
启迪:果然,离成功就差一步,如果刚刚我放弃了,停下debug的步伐,那我终不会知道成功原来并不遥远,就在霎那间,在我执着的信念前它终会出现题目:树链剖分,细节真多,思路有一些乱,不过只要把所有情况考虑上了就ok了注意事项在代码中#include#include#include#include#include#include#define debug(x) c原创 2016-07-25 18:39:19 · 470 阅读 · 0 评论 -
bzoj1593(线段树)
线段树一种新见的询问方式。1.询问连续长度为x的空的区间的最左端点,并将这段覆盖(通过最长子序列来做,先判断左边有没有这样的区间,再判断相连接的地方有没有,再判断右边有没有)2.区间覆盖为空或有 #include#include#include#include#includeusing namespace std;int n,ans;struc原创 2016-09-20 19:50:40 · 732 阅读 · 0 评论 -
bzoj3339(线段树)
这一题在线似乎比较麻烦至于离线。。首先按照左端点将询问排序然后一般可以这样考虑首先如何得到1-i的sg值呢这个可以一开始扫一遍完成接着考虑l-r和l+1-r的答案有何不同显然是l-next[l]-1这一段所有sg值大于a[l]的变为a[l]这一步如果暴力修改的话只有30分但是修改区间我们可以想到线段树,这样就能a了#include#include原创 2016-09-21 20:11:45 · 615 阅读 · 0 评论 -
bzoj3585(线段树)
细节好恶心#include#include#include#include#includeusing namespace std;const int N=200005;const int inf=0x3f3f3f3f;inline int read(){ int ans,f=1;char ch; while ((ch=getchar())'9') if (ch=='-')原创 2016-09-22 20:35:15 · 614 阅读 · 1 评论 -
bzoj1835(线段树优化dp)
神题啊,好吧,应该是因为我太弱了。。。设f[i][k]表示到第i个村庄,第i个村庄一定会建基站,已经建了k个基站的最小费用.f[i][k]=min{f[j][k-1]+cost(j+1,i-1)}+c[i];cost(x,y)表示x到y这一段的最小补偿费用.这个dp是O(n^3)的,TLE.由于状态数已经是N^2,主要的瓶颈在于转移的复杂度cost(x,原创 2016-08-14 12:20:14 · 1010 阅读 · 0 评论 -
codevs线段树练习5(双重标记)
有n个数和5种操作add a b c:把区间[a,b]内的所有数都增加cset a b c:把区间[a,b]内的所有数都设为csum a b:查询区间[a,b]的区间和max a b:查询区间[a,b]的最大值min a,b:查询区间[a,b]的最小值双标记,注意双标记间的关系即可,注意一下,不是很难,顺便练代码能力,可惜一次编完,还是有两个地方没考原创 2016-05-14 20:12:16 · 807 阅读 · 0 评论 -
bzoj1012(线段树或单调队列)
线段树#include#include#include#include#includeusing namespace std;struct aa{ int l,r,mx;}a[200005*4];int n,tot,m,mod;void build(int i,int l,int r){ a[i].l=l;a[i].r=r; if (l==r) retur原创 2016-08-13 10:07:34 · 1102 阅读 · 0 评论 -
bzoj4034(树链剖分裸题)
用到了dfs序以后注意到这样的数据范围直接开ll就可以,1过样例且1A,(^-^)V#include#include#include#includeusing namespace std;typedef long long ll;const int N=100005;inline int read(){ int ans,f=1;char ch; while ((ch=g原创 2016-08-19 16:57:13 · 485 阅读 · 0 评论 -
codeforces366(线段树,博弈游戏)
第一题。。。模拟2.最初有k个循环,vi个顶点组成的。游戏者交替选择。彼得先。每一个人必须选择一个有至少2点的周期,并把他们分成两堆。如果一个人不能再移(所有堆都是1),那么他就输掉了了游戏。彼得想测试一些初始周期的配置集之前。最初他在第i个测试一个空集。给出n,n次加入循环,每次测试后,彼得想知道,如果玩家开始游戏以当前的周期,谁赢了?先手原创 2016-08-08 09:15:25 · 458 阅读 · 4 评论 -
poj3277city,离散化+线段树 或 stl的multiset
#include#include#include#include#includeusing namespace std;typedef long long ll;struct aa{ int l,r,h;}a[4*100000+9];int n,nn;int x[100009],y[100009],h[100009];int q[100009];void build(i原创 2016-07-14 21:00:58 · 327 阅读 · 0 评论 -
bzoj3038(线段树开根)
开根,直接搞 #include#include#include#include#includeusing namespace std;typedef long long ll;inline ll read(){ ll ans,f=1;char ch; while ((ch=getchar())'9') if (ch=='-') f=-1;ans=ch原创 2016-09-18 21:08:49 · 448 阅读 · 0 评论