自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

aozil_yang的博客

点滴记录,记录成长,帮助你我!

  • 博客(13)
  • 收藏
  • 关注

原创 HDU 3954 Level up (线段树)

题意: 有n 个英雄,初始化为等级1,0经验。告诉你升每一级所需经验数。   两种操作: 1. 将[L,R]中的英雄来杀能力值为e 的怪物, 这些英雄涨  等级*e  的经验。 2.  询问区间中最大经验。 思路: 线段树, 维护一个区间中最大等级, 升级所需要最小经验,最大经验数。 其实挺暴力的。 我们想一想 什么时候 可以加懒惰标记? 杀死怪物后,区间内没有人

2017-06-30 17:09:32 369

原创 HDU 3642 Get The Treasury (线段树 体积交[转成面积交])

题意: 求n 个长方体的体积交(至少三次以上)。 思路: 因为Z的范围比较小。 直接暴力Z轴, 把所有Z轴转成   二维的平面。 直接求z个 面积交即可。 注意 区间是 一闭一开。 #include #include #include #include using namespace std; const int maxn = 2000 + 10; int T, ks;

2017-06-29 23:43:07 363

原创 HDU 4553 约会安排 (线段树 -- 区间合并(多种优先级的区间合并) )

题意: 题意不说了= =~毕竟中文题。 思路: 求长度为len 的最左位置,显然是一个 区间合并的线段树问题。 但是有两个优先级, 一个是屌丝,一个是女神。 所以 直接开两个状态在结点中记录。 第一个状态 记录的是    一个区间中  什么都没有的  左边最大连续长度l1, 右边最大连续长度r1, 和最大连续长度m1. 第二个状态记录的是  一个区间中  无视屌丝的  左边最大连续长

2017-06-27 21:50:25 515

原创 HDU 4578 Transformation (线段树)

题意: 4种操作: 区间加和, 区间赋值,区间乘法, 查询区间 一次方和,二次方和,三次方和。 思路: 区间赋值优先级最高。 直接把加法标记和乘法标记直接赋0, 然后计算和。 其次是乘法, 先计算和, 如果发现有加法标记,在更新一下加法标记, 因为 (a+b)*x = a*x + b*x;  相当于原数乘以x 在加bx ,此时加法标记由b变成了bx。 最后是加法。 更新区间和时,

2017-06-26 22:25:24 316

原创 POJ Hotel (线段树--区间合并[区间赋值])

题意: n间空房子, 操作1问你能否连续住x 个房子, 如果能 就输出最左边的编号。 如果不能输出0; 操作2 将给定的区间[x,y] 清空。 思路: 线段树区间合并。 像极了HDU 1540  点击打开博客链接 建树 和 那个题一样, 每个结点 维护 一个区间  从左边开始最大连续长度l, 从右边开始最大连续长度r, 中间最大连续长度m(只不过改成了区间赋值的形式,加一个懒惰

2017-06-20 22:06:18 953

原创 HDU 4288 Coder || CodeForces - 85D Sum of Medians (线段树)

题意: 给你3种操作: 1. 向集合中加入数x。 2.在集合中删除数x。 3.求和sum:  将集合中的数组排好序,将下标(从1开始) 对5取模为3 的位置的数 求和。 思路: 线段树结点  sum[i] 表示  对5取模为i 的数的和。 cnt 表示这个区间内存在的数的个数。 那么每次1,2 操作更新单个结点, 然后pushup: 左子树的位置和父结点的下标位置是一样的, 右

2017-06-20 18:13:35 413

原创 HDU 4614 Vases and Flowers (线段树[区间赋值+区间求和] + 二分)

题意: 给你n 个花瓶,每个花瓶只能放一朵花。两种操作 操作1: 给你f 朵花, 从a位置开始放,如果空花瓶不够了,或者花放完了, 就不放了。 输出 放的第一朵的花的位置 和最后一朵花的位置。 操作2: 给定区间[a,b] 将这个区间内的花瓶清空, 输出扔花的数量。 思路: 操作2很好处理,  先查询这个区间花的数量(有花可以设置为1,没花为0), 在区间修改

2017-06-19 00:53:29 597

原创 Codeforces Round #418 (Div. 2) -- C. An impassioned circulation of affection(DP预处理)

题意: 给你一个字符串, 告诉你喜欢的字母,和改变字母的次数,求在次数内 在长连续喜欢字母的长度? 思路: 直接令dp[i][j] 表示改变i 次,喜欢字母为j 的最大长度。 直接n*n*26预处理即可。 #include using namespace std; const int maxn = 1500 + 10; char s[maxn]; int dp[maxn][30]

2017-06-08 15:52:34 108

原创 HDU 3974 Assign the task(dfs序 + 线段树区间赋值,单点查询)

题意: 给一棵树, C x 操作 查询x 节点的权值, T X Y, 将X 这课子树上所有节点权值都赋值为Y。 思路: 因为是子树所有节点。 直接dfs序跑一遍, 将所有节点变成连续的, 然后就可以用线段树了。 剩下的就是  线段树区间赋值,单点查询问题了。 #include #include #include #include using namespace std; co

2017-06-07 21:31:48 433

原创 ZOJ 1610 Count the Colors (线段树-区间覆盖)

题意: 给你 n 个棍子的区间, 和颜色c,要求把这些区间染色c,求最后每种颜色能看见几段? 思路: 直接按照给的顺序区间覆盖即可,最后一个很深的dfs , 把 线段树上所有区间的懒惰标记都往下传。 最后统计每个叶子结点(单节点)的值即可。 另外注意  区间 是左闭右开 或者左开右闭  反正不是 全闭!!!! 很蛋疼的是建树 竟然建成了1,n,1  应该是1,8000,1    RE了

2017-06-07 16:01:53 434

原创 HDU 1540Tunnel Warfare Tunnel Warfare (线段树- 区间合并-单点更新查询)

题意: 给你n 个数(1,2,3,,,n),刚开始都是连续的, 有三种操作: 1. 将某个数x 切割开(变的不连续) 2. 恢复上一个切割的数(变的连续) 3. 查询x 位置数, 最长连续的长度。 思路: 线段树: 需要维护 l 表示这个区间从左端点开始最大连续长度 r 表示这个区间从右端点开始的最大连续长度 m 表示这个区间的最大连续长度。 整体是单点更新,单点查询。  就是

2017-06-07 14:57:58 426

原创 HDU 4027 Can you answer these queries? (线段树 - 区间开根取整)

题意: 给你n 个数, 两种操作,一种区间成段开根号取整,另一种求区间和。 思路: 因为一个数开上大约7,8次 就成1 了, 1在开根号不变了。 因此我们在递归子区间时,如果发现这个区间都是1了,那就不用在递归了。 在维护一个pushup 求sum 即可 注意: 1. 开long long 2. 区间左右端点可能出现左大于右的情况。 #include #include #in

2017-06-06 21:18:31 567

原创 POJ 2528 Mayor's posters (线段树区间赋值 + 离散化)

题意: 给你n 个海报的左端点和右端点  依次贴好后, 求最后能看见几个海报? 思路: 正常思路想到的是把2n 个端点依次离散化,然后区间赋值,然后查询线段树上每一个区间,最后统计赋值数的种类。 但是这样有个小坑: 例如 1 - 10  1 - 4 6 - 10, 离散化后 区间是 1- 4  1- 2  3 - 4  这样 就把1-4 给覆盖掉了, 就会少数一个海报。 得到2n 个

2017-06-06 18:10:34 445

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除