自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

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

原创 Codeforces Beta Round #19 D. Points

题意:有三种操作“add x y”往平面上添加(x,y)这个点,"remove x y",将平面上已经存在的点(x,y)删除,“find x y”找出平面上坐标严格大于(x,y)的点,如果有多个点找x最小的,再找y最小的。第一次写这种类似的线段树,好处是省内存。#include #include #include #include #include #include #incl

2012-09-21 23:00:19 3018

原创 hdu 4293 Groups

题意:有 n 个人,可任意分成若干组,然后每个人各提供一个信息,表示他们组前面有多少个人,后面有多少个人。问最多有多少个信息是不冲突的。可以用DP,也可以转化成求最长路。DP,设这n个人的编号是从1到n,则每个的提供的信息可以转化成一段区间[a+1,n-b]。那么问题就可以转化成有最多有多少个区间是互不相交的。将区间按终点排序后跑DP。dp[i]=max(dp[j]+num[i]) (0

2012-09-21 20:22:18 896

原创 hdu 4358 Boring counting(树型结构转线型结构,线段树)

题意:给你一棵树,树上的每个节点都有树值,给m个查询,问以每个点u为根的子树下有多少种权值恰好出现k次。方法跟 Codeforces Round #136 (Div. 2) D. Little Elephant and Array很类似,只不过要将树型结构转化成线型结构。#include #include #include #include #include #inclu

2012-09-19 22:58:51 1666

原创 Codeforces Round #136 (Div. 2) D. Little Elephant and Array

题意:给你n个数m个查询,问在每一个查询区间[l,r]范围内有多少个值为valu的数出现次数也为valu。有两种用线段树的方法。两种方法同样都是离线处理查询,保存所有的查询,将查询按照终点从小到大排序。用cnt[valu]记录valu的出现次数,用pos[valu]记录每个valu出现的位置。1.线段树更新区间,查询点从小到大遍历这n个数,同时更新cnt[]和pos[]。当valu的出

2012-09-18 22:01:20 3013

原创 hdu 4267 A Simple Problem with Integers

题意:给你两个操作,,“1 a b k c”表示在区间[a,b]内位置满足(i-a)%k=0的数加上c,k的范围在1到10之间。“2 a”表示查询第a个数。首先明确,(i-a)%k=0等价于i%k=a%k,即i满足i+k满足,i+2*k也满足……。但是如果想用如线段树,数状数组等数据结构去优化,要求数必须是连续的一段的,所以思路就是所间隔的数整合在一起。设数状数组bit[i][j]表示当k等于

2012-09-16 21:06:27 1893

原创 hdu 4288 Coder & CF85-D Sum of Medians (单点更新)

题意:有三种类型的操作,1."add x"表示往集合里添加数x。2.“del x”表示将集合中数x删除。3.“sum”求出从小到大排列的集合中下标模5为3的数的和。集合中的数都是唯一的。线段树。在线段树中维护当前这个集合中数的个数cnt,和所有的数模5为0……4内的数的和设为mod[0...4]。在进行区间合并的时候,父区间里的mod[0...4]首先等于左子区间里的mod[0...4],设要

2012-09-16 20:22:16 2824

原创 hdu 4052 Adding New Machine

题意:给你W*H大小的矩形,其中有N个地区不能使用(给出了这个地区的两个顶点的坐标即(x1,y1)和(x2,y2)),问能下多少个1*M的矩形。分别统计1*M的矩形横着放能放多少个,竖着放能放多少个。可以转化成统计哪些位置可以放这矩形的第一个方格。比如说,当我们统计横着能放多少个的时候,问题转化成找出有多少个这样的方格(i,j),使得(i,j+1),(i,j+2)……(i,j+m-1)都是可以

2012-09-16 00:42:17 1849

原创 hdu 4055 Number String

题意:由数字1到n组成的所有排列中,问满足题目所给的n-1个字符的排列有多少个,如果第i字符是‘I’表示排列中的第i-1个数是小于第i个数的。如果是‘D’,则反之。定义dp[i][j]表示在这个排列中第i个数字以j结尾的,满足条件的子排列有多少个。如果第i个字符是‘I’,那么明显可以得到dp[i][j]=dp[i-1][j-1]+dp[i-1][j-2]+……+dp[i-1][1]。如

2012-09-15 22:45:12 2388 2

原创 后缀数组

其实就是将两篇论文里的东西整合在了一起,并且提供了一个比较好理解的板。后缀数组        字符串:一个字符串S是将n个字符顺次排列形成的数组,n称为S的长度,表示为len(S)。S的第i个字符表示为S[i]。        子串:字符串S的子串S[i…j],i        后缀:后缀是指从某个位置i开始到整个字符串末尾结束的一个特殊子串。字符串S的从i开关的后缀表示为

2012-09-15 20:07:07 10167

原创 hdc 4056 Draw a Mess(路径压缩)

题意:给出一个n*m的矩阵(n倒着处理所有的操作,将所有染色的格子删除,用并查集类似路径压缩的方法去快速寻找下一个没有染色的格子。#include #include #include #include using namespace std;const int N=201;const int M=50005;int n,m,q;char str[55];struct

2012-09-15 19:46:20 1033

原创 网络流最大流的sap()算法

现在想将一些物资从S运抵T,必须经过一些中转站。连接中转站的是公路,每条公路都有最大运载量。         每条弧代表一条公路,弧上的数表示该公路的最大运载量。最多能将多少货物从S运抵T?                  这是一个典型的网络流模型。为了解答此题,我们先了解网编流的有关定义和概论。         若有向图G=(V,E)满足下列条件:        1.

2012-09-15 19:38:46 8280 2

原创 hdu 4276 The Ghost Blows Light(树型DP)

题意:给你n个点,n-1条边构成树,每条边有边树,每个点有点权(表示走每条边的时间),问在时间T从点1走到点n,能够得到最多的点权有多少。树型DP。先用spfa跑出从点1到点n的最短路。如果这最短的时间已经超过T,那么就是无法完成的。容易知道,最短路径上的边只会经过一次且必须经过一次,而其他边会经过两次。将最短路径上的边的权值赋值为0,使得DP的过程一定会经过这些边。剩下的就是树型DP的问题了

2012-09-11 21:39:13 1848

原创 hdu 4358 Boring counting

题意:给你一棵树,树上的每个节点都有权值,问以点u为根结点的子树里,权值刚好出现k次的有多少个。首先把树型结构转化成线型结构(其实就是一次DFS)。线段树离线处理每个查询。转化成线型结构后,对于每个查询,我们可以将以树型结构里u为根结点的子树转化成线型结构里的一段区间。问题就在,如果统计刚好出现k次。对于每个数,我们记录它在线型结构里出现的位置即p[](下标从0开始,|p|表示其元素个数)

2012-09-05 23:55:35 983

空空如也

空空如也

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

TA关注的人

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