自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(5)
  • 收藏
  • 关注

原创 uva11235(RMQ问题)

题目的意思是:有一个有序的数组,然后每次给出数组的两个端点L,R,要求出数组区间[L,R]里面出现最多的数字。   题目的解法:运用RMQ的思想求解即可,在求解之前需要转化一下模型,我们把这个数组可以转化为对于数字p,记录它的左端点位置nL[p],右端点位置nR[p],个数nV[p],对于每一次访问实际我们可以分三块来进行求解:首先是左端点num[L]的数字个数等于nR[num[L]] - L

2015-07-18 10:01:55 305

原创 LA4329(树状数组)

题目的大致意思是:有n个乒乓球手,然后他们都有一个能力值,然后需要每三个选手可以组成一场比赛,这场比赛要求,中间的那个人作为裁判,而且中间的人的能力值必须在两位选手之间,这个比赛才是合法的比赛,问这个这些选手一共能组织成多少场比赛?  解题思路:首先对单个人作为裁判进行研究,假设标号i的人,假设前面小于他能力值的人为C[i],那么前面大于他能力值的即为i - 1 - C[i],假设后面小于他能

2015-07-17 10:24:06 346

原创 uva(11997,求k个表的组合最小k个值)

题目大致的意思是有K个长度为K的数组,在每个数组中取一个元素求和,要求出所有和中前K小的。  解决的思路是:     首先我们可以想到两个有序数组进行求和时,可以看做有K个表:      1.  A[0] + B[0]       2.  A[1] + B[0]       ...    ...   ...      我们可以用一个优先队列来维护,一开始先取每个表头的元素入

2015-07-15 17:03:11 255

原创 LA3027(并查集)

就是并查集维护连通分量,找到祖先节点(即根节点),我的代码不好的地方,在于路径压缩后的距离更新没写好,应该可以采取后序遍历的方法写距离的更新,代码如下:  int find(int v){ if(v != father[v]){ int u = find(father[v]); dis[v] += dis[father[v]]; return father[v] = u; }

2015-07-14 16:38:41 277

原创 LA3644(并查集,维护连通分量的集合)

题目的大致意思就是要拒绝会使图中出现环的边,用一个并查集来进行维护,如果是同一个连通分量中的就拒绝。    #include "stdio.h"#include "string.h"#include "math.h"#include #include #include #include #include #include #include using namespace

2015-07-14 15:59:02 384

空空如也

空空如也

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

TA关注的人

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