随笔分类 - 【2014 Summer Training】
摘要:题意:让你维护一个集合,有8种操作:1. I x 插入一个数2. R x 删除x3. S 输出总的数个数(集合大小)4. L x 查询小于x的数的个数5. W k 查询集合中数从小到大排列的第k个数6. C x 查询x的个数7. MI 查询集合中最小的数8. MA 查询集合中最大的数一道平衡树模拟的...
阅读全文
摘要:题意:给一个序列,操作1:给区间[a,b]中(i-a)%k==0的位置 i 的值都加上val 操作2:查询 i 位置的值解法:树状数组记录更新值。 由 (i-a)%k == 0 得知 i%k == a%k,又因为k #include #include #include #include #inclu...
阅读全文
摘要:题意:给一个n*m的格子,格子中有一些数,如果是正整数则为到此格子的花费,如果为-1表示此格子不可到,现在给k个宝藏的地点(k#include #include #include #include #include #include #define Mod 1000000007using names...
阅读全文
摘要:题意:求S(k) = A+A^2+...+A^k.解法:二分即可。if(k为奇) S(k) = S(k-1)+A^kelse S(k) = S(k/2)*(I+A^(k/2))代码:#include #include #include #include #define SMod musing ...
阅读全文
摘要:题意:给一串数字,问长度为m的严格上升子序列有多少个解法:首先可以离散化为10000以内,再进行dp,令dp[i][j]为以第i个元素结尾的长度为j的上升子序列的个数,则有dp[i][j] = SUM(dp[k][j-1]) (a[k] #include #include #include #inc...
阅读全文
摘要:题意:给一些直线,问这些直线在直线x=L,x=R之间有多少个交点。讲解见此文:http://blog.sina.com.cn/s/blog_778e7c6e0100q64a.html首先将直线分别跟x=L+eps,x=R-eps(防止出现相同纵坐标,故+-eps)求他们的交点,求的纵坐标为low,h...
阅读全文
摘要:题意:给了一棵树以及每个节点的颜色,1代表黑,0代表白,求将这棵树拆成k棵树,使得每棵树恰好有一个黑色节点的方法数解法:树形DP问题。定义:dp[u][0]表示以u为根的子树对父亲的贡献为0dp[u][1]表示以u为根的子树对父亲的贡献为1现在假设u为白色,它的子树有x,y,z,那么有dp[u][1...
阅读全文
摘要:题意:给你一些区间操作,让你输出最后得出的区间。解法:区间操作的经典题,借鉴了网上的倍增算法,每次将区间乘以2,然后根据区间开闭情况做微调,这样可以有效处理开闭区间问题。线段树维护两个值: cov 和 rev ,一个是覆盖标记,0表示此区间被0覆盖,1表示被1覆盖,-1表示未被覆盖, rev为反转标...
阅读全文
摘要:题意:给n个矩形,求矩形周长并解法:跟求矩形面积并差不多,不过线段树节点记录的为:len: 此区间线段长度cover: 此区间是否被整个覆盖lmark,rmark: 此区间左右端点是否被覆盖num: 此区间分离开的线段的条数重点在转移的地方,不难理解。代码:#include #include #in...
阅读全文
摘要:题意:给出n个矩形,求矩形中被覆盖K次以上的面积的和。解法:整体与求矩形面积并差不多,不过在更新pushup改变len的时候,要有一层循环,来更新tree[rt].len[i],其中tree[rt].len[i]表示覆盖次数大于等于i的线段长度,以便求面积,最后只要每次都用tree[1].len[K...
阅读全文
摘要:题意:给出矩形两对角点坐标,求矩形面积并。解法:线段树+离散化。每加入一个矩形,将两个y值加入yy数组以待离散化,将左边界cover值置为1,右边界置为2,离散后建立的线段树其实是以y值建的树,线段树维护两个值:cover和len,cover表示该线段区间目前被覆盖的线段数目,len表示当前已覆盖的...
阅读全文
摘要:题意:给你n个球排成一行,初始都为黑色,现在给一些操作(L,R,color),给[L,R]区间内的求染上颜色color,'w'为白,'b'为黑。问最后最长的白色区间的起点和终点的位置。解法:先离散化,为了防止离散后错误,不仅将L,R离散,还要加入L+1,L-1,R+1,R-1一起离散,这样就绝不会有...
阅读全文
摘要:题意:给你一个字符串,要求把它按语法转化成HTML格式。分析:这题其实不难,就是一个递归的事情,当时忽略了括号嵌套的情况,所以一直WA,后来加上这种情况后就过了。简直醉了。处理id和class时,在一个'>'内,先把遇到的id和class都push到一个容器中,然后再输出即可。这题要注意的地方: 1...
阅读全文
摘要:题意:不讲了,线段树离散化的入门题。之所以贴出来只为吐槽几个地方:1.最后统计颜色的时候,试了好几种方法都TLE,反正用vis就TLE,不知道别人的怎么行,最后没办法,学了网上一个机智的做法:用set记录ans个数,最后过了。2.数据不对,离散化的时候如果排完序后相邻的元素值不相邻的话,是不能离散为...
阅读全文
摘要:题意:给你一些区间,再查询一些点,问这些点与所有区间形成的最小距离的最大值。最小距离定义为:如果点在区间内,那么最小距离为0,否则为min(pos-L[i],R[i]-pos)。解法:当然要排个序,仔细想想会发现我们要找的区间的位置满足二分性质,即如果此时pos-L[mid] >= R[mid]-p...
阅读全文
摘要:题意:说不清楚,自己看吧,太恶心。这题真是SB了,当时看了一下以为乱搞就好了,于是开始动手拍,结果拍了好几个小时都没拍出来,而且越想越想不通,直接把自己绕进去了,结果gg了。总结:甭管什么题,想清楚了再拍。其实当初绕进去的时候,应该换个思路重新来一遍更好解法:枚举时间从00:00~23:59,数字显...
阅读全文
摘要:题意:n个点,m条边,每条边有一个权值,找一条边数最多的边权严格递增的路径,输出路径长度。解法:先将边权从小到大排序,然后从大到小遍历,dp[u]表示从u出发能够构成的严格递增路径的最大长度。 dp[u] = max(dp[u],dp[v]+1),因为有重复的边权值,所以用dis数组先记录,到不重复...
阅读全文
摘要:题意:给出数组A,定义f(l,r,x)为A[]的下标l到r之间,等于x的元素数。i和j符合f(1,i,a[i])>f(j,n,a[j]),求有多少对这样的(i,j).解法:分别从左到右,由右到左预处理到某个下标为止有多少个数等于该下标,用map维护。然后树状数组更新每个f(j,n,a[j]),预处理...
阅读全文
摘要:题意:两个人A和B在打牌,只有题目给出的几种牌能出若A第一次出牌B压不住或者A一次就把牌出完了,那么A赢,输出Yes,否则若A牌没出完而且被B压住了,那么A输,输出No。解法:知道规则,看清题目,搞清有哪些Trick,就可以直接模拟搞了。详见代码:#include #include #include...
阅读全文
摘要:令一个点的属性值为:去除这个点以及与这个点相连的所有边后得到的连通分量的节点数的最大值。则树的重心定义为:一个点,这个点的属性值在所有点中是最小的。SGU 134 即要找出所有的重心,并且找出重心的属性值。考虑用树形DP。dp[u]表示割去u点,得到的连通分支的节点数的最大值。tot[u]记录以u为...
阅读全文


浙公网安备 33010602011771号