- 博客(15)
- 问答 (1)
- 收藏
- 关注
原创 poj 2886
题意: N个小孩围成一圈,他们被顺时针编号为 1 到 N。每个小孩手中有一个卡片,上面有一个非 0 的数字,游戏从第 K 个小孩开始,他告诉其他小孩他卡片上的数字并离开这个圈,他卡片上的数字 A 表明了下一个离开的小孩,如果 A 是大于 0 的,则下个离开的是左手边第 A 个,如果是小于 0 的,则是右手边的第 A 个小孩。游戏将直到所有小孩都离开,在游戏中,第 p 个离开的小孩将得到 F(p
2015-07-25 17:01:01 382
原创 hdu 4417
给n个数和m次询问,每次询问给三个数字l ,r , h,要求区间[l,r]中小于等于h的数字个数。 这题可以用离线树状数组或划分树做,先讲一下树状数组。 这里要求区间里有多少个数小于等于某个数,联想用树状数组求逆序数的过程,用类似的方法在lgn的时间内求出结果,即对于每一次询问,计算出所有小于等于h的数出现的次数。具体在于先对题目中的条件做一些处理,以便能够使用树状数组
2015-07-25 14:53:18 311
原创 划分树
划分树是一种用线段树作为辅助的数据结构,主要用于在lgn时间内查询区间的第k大数值,其原理是基于快排和归并排序的。 划分树的建树过程可以看做是模拟快排的过程,根节点保存原始数组的信息,同时再另开一个数组保存对原始数组排序好后的信息,然后通过排序好后的数组得到中位数,以中位数为划分依据,将小于中位数的数字划入左孩子,大于中位数的数字划入右孩子,那么等于中位数的数字该如何处理呢?其实既
2015-07-24 15:07:33 392
原创 hdu 5288
题意:给n个数,让你输出所有的f(l,r)之和,1 分析:换个方向思考问题,实质上是在求对第i个数,有多少个区间使得它不能被其它数整除。这样,最后只要把所有数的满足条件的区间数加起来就行了。为此,我们可以开两个数组l[i],r[i],l[i]记录左边离第i个数最近的且是其因子的数的位置,r[i]则记录右边。于是,第i个数满足条件的区间数就为(i-l[i])*(r[i]-i)。
2015-07-22 16:25:14 407
原创 poj 2352
题意:给出平面上n个点的坐标,每个点有个level值,表示这个点左方,下方以及左下方一共有多少个点(不包括自己),然后让你输出level为0的点有多少个,为1的点有多少个。。。一直输出到level值为n-1的点有多少个。 注意数据是按y轴坐标递增的顺序给出的,y轴坐标相同时,按x轴递增顺序给出。 分析:练习树状数组的一道不错的题目,要使用“降维”
2015-07-20 10:06:24 355
原创 hdu 1217
题意:有n种货币以及m种两个货币之间的兑换比率,求有没有一种盈利方式,即从一种货币出发,在经过一系列兑换后在兑换回来,其值会增大。 分析:刚开始想的是BFS从一个点出发的所有路径,但感觉这样实在不太好,后来才知道只要用Floyd求两点之间的最长路径,对原来Floyd的代码稍作改动就行了。 代码如下:#include #include #include #incl
2015-07-17 09:23:24 419
原创 poj 1061
由题意很容易得到式子 (n-m)*t+L*k=x-y,其中t代表跳的步数,k表示一个整数,可以看出式子形式与扩展欧几里德相似,令a=(n-m),b=L,x=t,y=k,c=x-y,于是就有a*x+by=c。 代码如下:#include #include #include #include #include #include #include #include #in
2015-07-16 15:25:47 380
原创 poj 3013
题意:KCM 市要造一个大的圣诞树,现在给你含n个点和m条边的图,要你从中选出若干边,从而建成一颗圣诞树。原始图中每个节点都有权值,每条边也有一个权值代表其单位造价。建一颗圣诞树的造价等于树上每个节点的造价之和。每个节点的造价等于从根节点(固定为1)到该结点的最短路径*该节点权值。 分析:理解题意后其实就没什么难度了,就是求最短路径,因为是稀疏图,所以用spfa要更好些。另外,要
2015-07-16 12:21:20 499
转载 二分图匹配
二分图指的是这样一种图,其所有顶点可以分成两个集合X和Y,其中X或Y中任意两个在同一集合中的点都不相连,所有的边关联在两个顶点中,恰好一个属于集合X,另一个属于集合Y。给定一个二分图G,M为G边集的一个子集,如果M满足当中的任意两条边都不依附于同一个顶点,则称M是一个匹配。图中包含边数最多的匹配称为图的最大匹配。 二分图的最大匹配有两种求法,第一种是最大流;第二种就是我现在要讲的匈
2015-07-15 17:43:16 386
转载 poj 3667
线段树 题意:有一个线段,从1到n,下面m个操作,操作分两个类型,以1开头的是查询操作,以2开头的是更新操作1 w 表示在总区间内查询一个长度为w的可用区间,并且要最靠左,能找到的话返回这个区间的左端点并占用了这个区间,找不到返回0 好像n=10 , 1 3 查到的最左的长度为3的可用区间就是[1,3],返回1,并且该区间被占用了2 a len , 表示从单位a开
2015-07-14 15:00:25 285
原创 poj 1011 DFS
一道恶心的搜索题,主要是要考虑很多剪枝的情况,不然就只有TLE了。。。。 题意:给n个木棍,每个木棍有一个长度,要求给木棍分组,使得分组后,每个组的木棍长度之和相等,且和要最小。输出这个最小的长度之和。 分析:既然是要使分组后木棍长度之和最小看,能想到的是从最小的长度之和开始枚举,判断这个和是否合法,合法则是所求解,否则继续枚举下一个长度和。当时这个过程中有许多是需要剪
2015-07-13 16:14:08 69
原创 poj 1436
题意:给出平面上一条垂线的坐标y1,y2,x,y1和y2分别代表垂线两个端点的纵坐标值,x代表横纵坐标。以三条线段为一组,要求输出有多少组里任意两条线段都是相互可见的。可见的定义为:有一条水平线段,能够直接的连接两条垂线,中间不经过其它垂线,则称这两条垂线相互可见。 注意:两条垂线仅端点相交,也算是可见的。 分析:实质就是线段树的区间更新问题,是poj2777区间染色问题的延伸
2015-07-11 11:40:46 394
原创 hdu 1698
线段树模板题,注意要用到lazy操作便是了。 代码如下:#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define
2015-07-04 19:03:08 363
原创 hdu 1443
题意:有k个好人和k个坏人围成一个环,并且从1开始编号,前k个是好人,后k个是坏人。然后从1开始报数,报到m的出去,接着从一个开始重新报数。让你求一个最小的m,使k个坏人没有出去前,好人不能出去。 分析:这道题k 其实和约瑟夫问题类似,也是在有人出去后将环重新标号。枚举m,在每一个m下,每出去一个坏人,重新标号得到一个新环,此时若发现在人数大于k人的情况下
2015-07-01 18:59:56 570
原创 hdu 4542
题意:给一系列操作,每个操作有两个数t和k,t=0表示求k以内的最大反素数;t=1表示求小于k且与k互质的数的个数。 分析:对第一个操作,直接用dfs求反素数就行了;第二个操作素数筛法的思想预先打个表。 代码如下:#include #include #include #include #include #include #include #include
2015-07-01 16:01:33 614
空空如也
pyinstaller 打包引入gensim模块的脚本出错
2018-02-04
TA创建的收藏夹 TA关注的收藏夹
TA关注的人