2014年3月4日

hdu 1232 并查集

摘要: #include#includeusing namespace std;const int maxn=1005;int f[maxn];bool v[maxn];int findset(int x){ return f[x] != x ? f[x]=findset(f[x]) : x;}void merge(int a,int b){ int fa=findset(a); int fb=findset(b); if(fa!=fb) f[fa]=fb;}int main(){ int n,m,i,a,b,ans; while(scanf("%d",&n),n) ... 阅读全文

posted @ 2014-03-04 22:05 雄.. 阅读(121) 评论(0) 推荐(0)

uva 11235 RMQ范围最大值

摘要: 题目大意:给一个整数上升序列,对于一系列询问区间(i,j),回答这段区间出现次数最多值所出现的次数。分析:一个上升序列,相同的值聚集在一起,把相同的值的区间看作一个整体,假设这样的整体有n个,把他们编号。num[p]表示原下标下的数所在段的编号,left[p]、right[p]表示所在段原下标的左右端点位置。编号后的数组用RMQ求范围最大值。对于询问的区间(L,R)在编号后的数组中以以下三个部分的最大值:从L到L所在段的结束处的元素个数(即right[L]-L+1)、从R所在段的开始处到R处的元素的个数(即R-left[R]+1)、中间第num[L]+1段到num[R]-1段的最大值(用RMQ 阅读全文

posted @ 2014-03-04 20:52 雄.. 阅读(243) 评论(0) 推荐(0)

导航