自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

酱油拌面

What if it rained? We didn't care

  • 博客(20)
  • 问答 (1)
  • 收藏
  • 关注

原创 UVA11992 Fast Matrix Operations(线段树)

题目链接:点击链接题意:给一个矩阵,有三个操作。操作1,将这个矩阵的一个子矩阵的值全加上v。操作2,将这个矩阵的一个子矩阵的值全置为v。操作3,求这个矩阵的一个子矩阵的最大值,最小值,和。思路:看似很简单的set和add操作,我这个线段树菜鸡,卡了很久。前几天写另一道线段树时,突然明白set操作和add操作先后顺序对答案的影响。都明白先add后set,前面的add会被置0,执行Set操作的时候,懒标

2017-08-23 16:03:03 347

原创 hdu3974 Assign the task(线段树/dfs)(好题)

题目链接:点击链接题意:给一棵n个点的树,点标号从1到n。有两种操作,操作1,将树上的某个点以及它的子孙都赋值为某个数;操作2,查询某个点的值。思路:做法一:dfs。更新时,将目标节点更新就行,给节点记录一个时间戳。查询时,向上访问父亲节点,对比儿子节点和父亲节点的时间戳,如果父亲节点的时间戳晚于儿子节点,儿子的值等于父亲的值,反之亦然。代码:#include <iostream>#include

2017-08-23 15:29:41 481 1

原创 hdu1540 Tunnel Warfare(线段树)(好题)

题目链接:点击链接题意:有n个村庄,连成一条线,有三个操作。操作一,将指定的一个村庄摧毁;操作二,查询指定村庄所在的线段上有多少个没有被摧毁的村庄;操作三,将上次被摧毁的村庄重建。思路:操作一和操作三是基础的单点更新。操作二的查询,需要查询连续区间的长度,建树的时候要对每个节点对应的区间[l, r]记录从l开始向右的最大长度prefix,从r开始向左的最大长度suffix,记录中间的最大连续

2017-08-23 14:46:02 476

原创 hdu4027 Can you answer these queries?(线段树)

题目链接:点击链接题意:有n个数,现在有一种操作,将这n个数中的一个区间[x, y],每个数都开平方。询问区间的和。思路:建树的时候,当前节点保存了对应区间的和。更新的时候,若当前节点对应的区间为[l, r],如果区间和小于(r-l+1),不往下更新,反之往下更新。代码:#include <iostream>#include <cstring>#include <cstdio>#inclu

2017-08-23 13:52:05 220

原创 ZOJ 1610 Count the Colors (线段树)

题目链接:点击链接题意:在x坐标轴上画线,每条线给出起点,终点,颜色编号,要求输出画了n条线后,每种颜色的线段有多少条思路:注意这里是[start, end]区间内为一种颜色,可以认为不包含起点终点,和以往那些包含起点终点的题目还是有区别的。处理的方法是起点加一。建树的时候,当颜色把当前区间完全覆盖时,我们就不往下打。查询的时候,先push down,如果当前区间在目标区间内时,遇到标记直接统计

2017-08-22 20:55:35 261

原创 LightOJ 1145 Dice (I) dp

题目链接:LightOJ 1145题意:有n个骰子,每个骰子有k个面,每个面有一个权值,为该面的下标,现在用用n个骰子凑出面值s,问有多少种方法。思路:设dp[i][j]表示第i个骰子凑出了j。 那么dp[i][j] = dp[i-1][j-1] + dp[i-1][j-2] + … + dp[i-1][j-k] 那么状态有n*s个,转移花费k,显然会超时。观察发现: dp[i][j-1] =

2017-08-16 16:22:17 351

原创 POJ2528 Mayor's posters(线段树)

题目链接:poj2528题意:n张等高的海报,贴在一堵无限长度的墙上,给出海报的起始坐标,海报张贴的顺序,海报会被覆盖,问最后能看见多少不同的海报。思路:海报的下标最大为1000W,线段树是存不下的,但是海报的数量只有10000,可以利用离散化技巧,把这10000个海报的起始下标重新分配序号,再用线段树维护。 这里是区间更新,整个区间置为一个值(其实只需要维护一个懒标记就可以了)。查询的时候,要跑

2017-08-16 16:02:36 297

原创 POJ3468 A Simple Problem with Integers(线段树)

题目链接:poj3468思路区间更新:区间加上某个数区间查询:区间和小结1A了。。代码#include <iostream>#include <cstring>#include <cstdio>using namespace std;typedef long long ll;const int maxn = 100000+5;ll tree[maxn<<2];ll add[maxn<<

2017-08-16 15:38:13 221

原创 hdu1754 I Hate It

题目链接:hdu1754 I Hate It思路单点更新。区间最大。小结又WA了一发。设查询区间为[QL, QR],当前节点为rt,对应区间为[L, R], mid=(L+R)/2。按照我的写法,当QL小于等于mid时,递归左区间,当QR大于mid时,递归右区间。这里应该是两个if,而我写成了if-else,含义就错了。代码#include <iostream>#include <algori

2017-08-16 15:31:56 303

原创 hdu1166 敌兵布阵(线段树)

题目链接:hdu1166 敌兵布阵思路单点更新,增加和减少。区间求和。小结看错题目,写成区间更新...WA了两发,WA在add打懒标记,更新当前节点时,乘以的是懒标记,而不是要更新的那个数。代码#include <iostream>#include <cstring>#include <cstdio>using namespace std;const int maxn = 50000;in

2017-08-16 15:20:23 233

原创 Kyoya and Colored Balls CodeForces 553A(组合数学)

题目链接:https://vjudge.net/problem/CodeForces-553A题意:有k种颜色的球,每个球的个数为c[i],对应编号为i。现在将这些球从左到右排列,要求颜色编号为i的球的最右边的一个必须要在颜色编号为i+1的最右边一个的左边,问有多少种组合。思路:设颜色为1, 2, 3….i-1的球一共有pre[i]个,那么颜色为i的球能放的位置有C(pre[i+1]-1, c[i]

2017-08-09 21:00:33 335

原创 CodeForces 828D High Road

题目链接:https://vjudge.net/problem/CodeForces-828D题意:有n个节点,这n个节点中有k个叶子节点,构造成一棵树,请给出一个最优方案,使得树的直径最小。思路:在保证是一棵树且使得树的直径最小,可以想象,像树的年轮一样一层一层往外扩展,才能满足题目条件。最中间放一个节点,然后每一圈的长度为k(保证有k个叶子),一圈一圈往外放。 当(n-1)%k==0时,最远距

2017-08-09 20:36:52 274

原创 CodeForces 828D Soldier and Number Game(数学)

题目链接:https://vjudge.net/problem/CodeForces-546D题意:给一个数n=a!/b!,求这个数n质因数分解后,质因数的个数之和。思路:a, b的范围是(1 ≤ b ≤ a ≤ 5 000 000),可以先枚举[1, sqrt(a)]内的素数,然后用这些素数对[a, b]范围内的数进行筛选。由于t太大,需要求前缀和。和这题类似: hdu6069总结:比赛时写到这题

2017-08-09 20:16:34 303

原创 hdu6069 Counting Divisors(数学)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6069题意:设d(xk)为求xk的因数的个数,如12的因数有1,2,3,4,6,12共6个,d(12)=6,题目求∑i=lrd(ik)设d(x^k)为求x^k的因数的个数,如12的因数有1,2,3,4,6,12共6个,d(12)=6,题目求\sum_{i=l}^r d(i^k)官方题解:设n=pc11pc

2017-08-09 19:48:42 690

原创 uvalive 3938 Ray, Pass me the dishes!(线段树)

题目链接:https://vjudge.net/problem/UVALive-3938题意:给一个数组,多次查询,询问区间[l, r]最大连续和。思路:线段树。 查询一个区间的最大连续和,可以找一个mid,这个最大连续和的起点和终点, 可能在mid的左边,或者在mid的右边,或者横跨mid。左区间和右区间的最大值是递归定义的,维护起来也是容易的。横跨mid的最大值如何计算?等于左区间最大后缀+

2017-08-08 15:38:22 316

原创 uva11235 frequent values(Sparse Table)

题目链接:https://vjudge.net/problem/UVA-11235题意:给一个非降序的整数数组a,求[i, j]中出现最多次数的数,出现了几次。思路:明显的是RMQ问题。白书上用的是Sparse Table,这个叫ST表就变成了表表….一开始思路就被定死,求出现最多的数出现的次数,感觉无从下手。看到刘汝佳的做法,还有这种操作….先进行游程编码,把相同的数压缩成一个点,对于所求的区间[

2017-08-06 19:45:15 293

原创 uvalive 4329 Ping Pong(树状数组)

题目链接:https://vjudge.net/problem/UVALive-4329题意:一条直线上有n个乒乓选手,每个人有一个技能值ai,他们之间需要切磋,需要一个裁判,裁判的技能值要在两个人之间,问一共有多少个个方案。裁判不同或者选手不同都可以看做是不同的方案。思路:参照白书。考虑第i个人当裁判,设a[1]到a[i-1]有c[i]个比a[i]小,那么有(i-1)-c[i]个比a[i]大,a[

2017-08-04 16:05:37 330

原创 uvalive3027 Corporative Network

题目链接:https://vjudge.net/problem/UVALive-3027题意:有个两个操作,I操作把u的父节点更新为v,把距离更新为abs(u-v)%1000,保证在这之前,u没有父节点。E操作询问u到根的距离。思路:I操作保证了在这之前u没有父节点,那么可以直接pa[u]=v; d[u] = abs(u-v)%1000; E操作可能是访问I操作中u的儿子节点到父节点的距离或者是u

2017-08-04 09:55:37 194

原创 hdu6060 RXD and dividing

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6060题意: 有一棵n个点的数,将2到n这n-1个点进行划分,分成k个点集,求每个点集并上1这个点后的最小斯坦纳树之和,要求这个和最大。可以参考这两个博客: http://blog.csdn.net/kkkkahlua/article/details/76562559 http://blog.csd

2017-08-02 21:03:35 243

原创 uva11997 K Smallest Sums(优先队列)

题目链接:https://vjudge.net/problem/UVA-11997题意:有k个长度为k的数组,从每个数组中取一个数加在一起得到一个新的数,按照这样操作,问得到的前k个最小的数是什么。思路:一共有k^k次方个数,k<=750,直接构造出来不可行。当只存在两个这样的数组的时候,设分别为数组a, b。分别将a,b数组从小到大排序。 可以构造如下: a1+b1 <= a1+b2 <= a

2017-08-02 19:18:17 309

空空如也

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

TA关注的人

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