线段树
文章平均质量分 70
zafkiel_nightmare
弱弱的程序员
展开
-
hdu 1754 I Hate It
线段树,单点维护,区间最值 #include #define maxn 222222 using namespace std; struct stu { int left,right; int max; }; int n,m,x,y; string cmd; stu mapp[maxn*4]; int sc[maxn]; void build(int l,int r,int count) {原创 2015-08-11 15:28:40 · 289 阅读 · 0 评论 -
hdu 1556 Color the ball
简单线段树,类似延迟更新的思想,最终统计的时候再更新到底 #include #define maxn 100010 using namespace std; int n; struct stu { int l,r,s; }; stu mapp[maxn*4]; void build(int l,int r,int count) { mapp[count].l=l; mapp[count].原创 2015-10-14 00:23:31 · 208 阅读 · 0 评论 -
hdu 5443 The Water Problem
2015长春网络赛1007 区间最值查询,线段树水题?暴力也能ac啊,有没有搞错啊,我惊呆了啊,心情不好,不写代码原创 2015-09-13 20:58:07 · 327 阅读 · 0 评论 -
hdu 1166 敌兵布阵
线段树,怎么说呢,牺牲更新的时间来优化查找的时间~ #include #define maxn 50000 #define ll long long using namespace std; struct stu { int r,l; ll sum; }; stu root[maxn*4]; int n,a,b; void build(int left,int right,int x) {原创 2015-08-03 23:31:52 · 513 阅读 · 0 评论 -
poj 3468 A Simple Problem with Integers
线段树成段更新,成段求和 开始没有注意到更新的值可以是负数,结果吧标记初始化为-1,wa到死 #include #include #define maxn 111111 #define ll long long using namespace std; ll num[maxn]; int n,m; string cmd; int a,b,k; struct stu { int l,r,m原创 2015-08-16 15:39:34 · 341 阅读 · 0 评论 -
poj 2828 Buy Tickets
线段树单点更新插入,从后往前,没难度 #include #define maxn 200010 using namespace std; int ans[maxn]; struct node { int x,y; }; node people[maxn]; struct stu { int l,r,m; int v; }; stu mapp[maxn*4]; void build(int原创 2015-08-15 15:00:08 · 421 阅读 · 0 评论 -
hdu 2665 划分树
开始用线段树+归并排序,4700+ms飘过~,后来去学划分树,虽然还不是很懂,不过就这样吧 #include #include #define maxn 100010 using namespace std; int n,m; int nsort[maxn]; int nleft[30][maxn],tree[30][maxn]; void build(int l,int r,int c) {原创 2015-08-14 01:20:34 · 439 阅读 · 0 评论 -
hdu 3308 LCIS
线段树,区间合并 最长上升子序列(严格上升) #include #define maxn 100010 using namespace std; int n,m; int a,b; struct stu { int l,r,mid; int ll,rl,ml; int d() { return r-l+1; } }; stu mapp[maxn*4]; int num[maxn]原创 2015-08-14 10:20:28 · 472 阅读 · 0 评论 -
hdu 1823 Luck and Love
二维线段树,写起来比较繁琐,难度并不大 #include #include #define maxn 222 using namespace std; int h,hh; double a,b; struct stus { int l,r; double max; }; struct stu { int l,r; stus root[1111*4]; }; stu mapp[maxn*4原创 2015-08-13 14:46:17 · 522 阅读 · 0 评论 -
poj 3667 Hotel
线段树之区间合并有一个线段,从1到n,下面m个操作,操作分两个类型,以1开头的是查询操作,以2开头的是更新操作 1 w 表示在总区间内查询一个长度为w的可用区间,并且要最靠左,能找到的话返回这个区间的左端点并占用了这个区间,找不到返回0 线段树之区间合并 接近2个月没怎么学算法刷题了,也落下了很多东西,慢慢补吧,明天开始二维线段树 #include #define原创 2015-08-13 02:22:44 · 607 阅读 · 0 评论 -
hdu 1698 Just a Hook
线段树成段更新,设置延迟标记,很好的方法,想出这个方法的人确实很吊 注意细节,有些小地方错了真的很难发现~ #include #define maxn 111111 using namespace std; int n,a,b,m; struct stu { int l,r,sum,flag; }; stu mapp[maxn*4]; void build(int l,int r,int c原创 2015-08-12 16:50:17 · 491 阅读 · 0 评论 -
hdu 2795 Billboard
以h建树,不过要注意,当h>n时只需要1-n就够了 简单线段树,维护区间最大值 #include #define maxn 222222 using namespace std; struct stu { int left,right,max; }; stu mapp[maxn*4]; int n,m,t,x; void build(int l,int r,int count) { map原创 2015-08-11 16:25:57 · 419 阅读 · 0 评论 -
hdu 2711 Lost Cows
题目大意:一群牛的编号为1~n,现在乱站成一列,fj记录下来了每头牛前面编号比它编号小的牛的头数,求各个位置上牛的编号 解题思路:从后往前推,假如排在最后的一头牛比他编号小的数量为a,那么它的编号必然为a+1。我们把编号为a+1的这头牛删掉,假如排在倒数第二的一头牛比他编号小的数量为b,那么该牛就为删掉编号后剩余牛中的第b+1头牛,我们可以照此思路下去... 问题就可以转化为搜索排在第原创 2015-10-15 19:34:56 · 472 阅读 · 0 评论