- 博客(43)
- 收藏
- 关注
原创 hdu 1506
题意:求一段区间内的最大连续和,且该段区间的值要大于等于这段区间的最小值,并和 = 最小值*区间长度;解题思路:利用单调栈可求.
2014-09-25 23:52:19
474
原创 scu 3329
题意:现有n*m矩阵,求矩阵的最大矩形面积且该矩形只含0;解题思路:如何利用单调栈来解决这个问题?先将A[][]的0变为1,1变为0矩阵A[][],我们可以先来预处理每一行,第i行与第i-1行的关系如果A[i][j]是1,则A[i][j] += A[i-1][j]; 且对于每一行可以等价于下图:所以对于每一行我们都可以用单调栈来求每一个最
2014-09-25 23:40:57
580
原创 poj 2796(单调栈)
题意:求 一段区间范围内的和*这段区间的最小值最大输出最大值和该区间的左右端点解题思路:利用单调栈的思想O(n)(递增栈:栈底最小,栈顶遇到比他小的值出栈)(递减栈: 与上述相反)首先我们可以预处理前缀和定义一个结构体:struct node{int L,R;};//这里我们利用递增栈的思想我们先将第
2014-09-25 23:23:57
405
原创 hdu 4768(二分)
题意:学校内有N个社团,且由于该学校的人数众多,所以第i个社团分发广告时,是从Ai开始,到Ai+K*Ci解题思路: 二分,因为学生最多只能出现一个,所以当我们二分到一个区间时,统计该区间得到广告数的总数,如果是偶数且肯定在更大的区间内,如果是奇数,则再更小的区间内。注意:可能会超int,且Ci可能为零。#includ
2014-08-01 23:18:00
554
原创 poj 3122(二分)
题意:现在有N个饼,现在要给F+1(包括他自己)分相同大小的pie,求每个人最多能分多少,且每个饼至少要分>=1的pie解题思路:二分结果注意:无
2014-08-01 23:09:32
454
原创 poj 3518(二分)
题意:给你一个数,求离他再那俩个素数之间。如 12 就在 11 与13之间,求已得的两个素数的距离。解题思路:打素数表+二分注意:无
2014-08-01 23:05:30
467
原创 poj 3273(二分+贪心)
题意:有N天,第i天消耗money_i钱数,现在让你将这N天分成M份,且必须是连续的,求M份中消耗的和的最小值。解题思路:二分消耗结果,看是否能分成M份,如果M,份说明和太小,以此作为二分依据。注意:无#include #include #include #define MAXN0 100010
2014-08-01 22:57:56
442
原创 hdu 4190(二分)
题意:给你N个城市每个城市有相应的人口,有B个选票箱,要求每个城市都至少有一个选票箱,且先要使N个城市中得选票箱的票数的最大值最小化。解题思路:二分结果,求上界注意:无
2014-07-30 23:40:02
489
原创 hdu 4893(线段树 成段更新+区间合并)
题意:给你大小为n的序列,该序列的初始值为0,有3种操作1.序列的第K个位置增加d2.询问一段区间的和3.将一段区间中得每一个数值都改为一个最小的fibonacci数,且该fibonacci数与区间内对应的值距离最近。解题思路:可以用线段树来解决该问题,且线段树中得域:lazy标记:表示当前某区间更新的标记sum:
2014-07-30 23:17:12
420
原创 hdu 2647(逆序拓扑排序)
题意:就是已经知道某个人得工资要大于另外一个人的工资,且每个人的基础工资为888,求发给所有人工资的总和最小。解题思路:利用逆拓扑排序,且得到一个入度为零的点时,他的工资是所有通往他的点的钱的最大值。注意:
2014-07-22 21:36:13
560
原创 hdu 4857(逆序拓扑排序)
题意:中文题解题思路:利用逆拓扑排序,然后在逆序输出即为答案。解释:首先我们建立逆向邻接表,进行对每个结点入度的计算,并用一个ans数组来存放最终的答案,且我们可以判断出的是当前结点入度为零的点出发的所有点都将在该点之后存放在ans数组中,且当我们遇到多个入度为零的的结点时,我们选择度数大的结点先放入到ans中,为什么?因为当这样我们能保证富裕的
2014-07-22 21:33:20
747
原创 zoj 3780(拓扑排序)
题意:有一个N’N的板,刚开始板上的所有元素都是其他颜色(不是黑,也不是白),且涂得方法有两种。1、涂一行,使该行的所有元素都变成黑色。2.、涂一列,是该列的所有元素都变成白色。解题思路:我们先考虑一下两种情况,就是有一行上得元素存在白点;有一列上得元素存在黑点。对于第一种情况,我们是否可以得到该行肯定事先涂黑的,然后在出现白点的列上,涂
2014-07-22 21:06:15
723
原创 hdu 4324(拓扑排序)
题意:有N个人,两两之间满足一种关系,比如 A love B 但是 B don‘t love A现在让你找一个三角,满足 (A,B and C) , A loves B, B loves C and C loves A.存在输出Yes ,否则输出No解题思路:可以用拓扑排序来判断当前有向图是否存在环,但是现在要求的环是满足三角关系,所以我们可以先用邻接表来存
2014-07-22 20:53:03
452
原创 poj 2155 (二维线段树的成段更新)
题意:原矩形所有的元素都为0,改变一个子矩形 ,使该矩形上的0变1,1变0,询问某一点为多少。解题思路:利用二维线段树域值C来记录某个该矩形经过几次操作,然后在询问时算操作的总数即可,奇数为1,偶数相反。注意:无
2014-07-20 16:07:38
468
原创 hdu 4819 二维线段树点更新
题意:算一个子矩形内的最大和最小的平均值,并将该平均值更新到该子矩形的中心(该矩形的边为奇数)解题思路:利用二维线段树的点更新和query即可注意:二维线段树的在点更新时,需先更新局部的子区间,然后更新全局区间
2014-07-20 16:04:07
466
原创 hdu 1823 二维线段树点更新
题意:中文题解题思路:利用二维线段树的点更新即可注意:二维线段树的在点更新时,需先更新局部的子区间,然后更新全局区间
2014-07-20 15:56:38
455
原创 hdu 1542(扫描线+线段树区间更新)
题意:求矩形面积的并解题思路:先将x坐标离散化,扫描线从底向上扫描。所以通过步骤,我们只记录平行与x走的线段,定义结构体struct segment{int l,r,h;// l表示该选段的左坐标,r表示该线段的有坐标,h表示改线 段的高度bool flag;//表示该线段是所在矩形的上边还是下边};所以我
2014-07-20 15:53:44
459
原创 hdu 3308(区间和并)
题意:求最长上升子序列的最大长度。两种操作:Q: 某一段区间的最长上升子序列的最大长度为多少U: 某一点 = val解题思路:如果单单求最长上升子序列,我们可以通过dp,或者分治的思想来求。因为此处操作多,所以上述方法不可行。我们在线段树的结点里增加几个域:lsum : 表示从当前结点的最左端开始的上升子序列的长度rsu
2014-07-20 15:33:22
512
原创 poj 3667(区间合并)
题意:有N个房间有两种操作:1 表示当前有Di个人要入住,且房间号必须连续,并输出最左边满足要求的,没有满足要求的输出02 表示从Xi房间开始总共Di个房间要退房。解题思路:在线段树的结构体里增加几个域值:lsum : 表示从该结点的左端点开始的连续的个数。rum : 同上相反sum : 表示该结点最大连续值
2014-07-20 15:08:05
448
原创 uestc Another LCIS(区间更新,区间合并)
题意:求最长上升子序列的最大长度。两种操作:q: 某一段区间的最长上升子序列的最大长度为多少a: 某一段区间都加上val解题思路:如果单单求最长上升子序列,我们可以通过dp,或者分治的思想来求。因为此处操作多,所以上述方法不可行。我们在线段树的结点里增加几个域:lsum : 表示从当前结点的最左端开始的上升子序列的长度rsu
2014-07-20 14:46:32
426
原创 poj 2528(线段树区间更新)
题意:有n条线段按照顺序进行覆盖,问最后可见的线段有多少。解题思路:我们可以对每条线段编号,然后在线段树内定义一个变量c,且c>0时表示当前该结点被第c种线段覆盖,且c==-1表示当前结点被多种线段覆盖,所以在统计时只要判断当前结点的c是否为-1,如果是继续向下访问,如果不是则直接统计。注意:这里要判断种类有多少,所以要去
2014-07-20 14:24:39
420
原创 poj 2886(线段树单点更新)
poj 2886题意:有N个人,顺时针围成一个圈,现指定第K个人先跳出,然后报一个数A,A>0,表示从跳出的人(跳出的人不算)左边第一个人开始的第A个人跳出,A解题思路:首先我们可以算出当前如果有N个人它的反素数(注意:反素数可以利用dfs求
2014-07-20 14:08:39
440
原创 hdu 1394 线段树单点更新
hdu 1题意:有一个序列,a1,a2,.......,an,现在要使该序列经如下变换:a1, a2, ..., an-1, an (where m = 0 - the initial seqence)a2, a3, ..., an, a1 (where m = 1)a3, a4, ..., an, a1, a2 (where m = 2)
2014-07-20 13:52:16
438
原创 ACdream 1124 喵喵的遗憾
题意:中文题。。。。解题思路:fibonacci 模 p 的最小周期.假设NP(m)表示m的最小周期,满足: NP(ab) = lcm(NP(a),NP(b)); 当且仅当(a,b)= 1; NP(p^d) = NP(p)*p^(d-1);当且仅当p为素数 如果p为素数,则 (p
2014-07-07 00:17:36
505
原创 菜鸟对于hash思想的总结
菜鸟对于hash思想的总结: 首先hash的作用就是为了使所谓的访问复杂度能够达到O(1)水平。利用hash还要学会防止相应的冲突,也是映射能够一一对应的保证。 常用的hash函数有: 1. 在解决八数码问题时,利用了康托展开,因为逆序数的范围为0~8,对应的康托展开项数为九项,两者之间存在一一对应的关系。 对应题目:hdu
2014-07-06 17:02:27
490
原创 hdu 1228
题意:中文题。。。。(水题)解题思路:利用字符串hash或map可求注意:无#include #include #include #include #include #include using namespace std;map mp;char str1[50];int num1,num2;void pr
2014-07-06 16:36:59
398
原创 hdu 1880
题意:中文题。。。。解题思路:利用字符串hash或map可求注意:无#include #include #include #include #define MAXN 110#define MAZE 100010#define mod 100003char mz[MAXN],gn[MAXN],str[MAXN],s
2014-07-06 16:34:17
499
原创 hdu 4277
题意:给你N个长度的木棍,这些木棍都要用上组成三条边,并能构成三角形,问这样所构成的三角形有多少个不同。解题思路:因为N注意:剪枝,和hash的构造。#include #include #include #include #include #include using namespace std;#define MAXN 100
2014-07-06 16:17:22
498
原创 hdu 1381
题意:判断字符串中有多少个长度为N的子串,且字符总类不会超过NC种。解题思路:字符串hash注意:无//字符串hash#include #include #include #include #include using namespace std;typedef
2014-07-06 16:06:05
669
原创 hdu 4082
题意:就是给你n个点,选三个点构成一个三角形,算相似三角形最多的有几个。解题思路:因为点最多只有18个所以三个for,因为判断三角相似,所以只要将其的边排序,然后算出三个角,进行比较即可。注意:判断重点,判断是否共线。
2014-07-06 16:01:05
559
原创 hdu 4821
题意:就是有一个字符串S,要求找到符合以下几种情况S的子串的个数.情况1: 该子串的长度为L*M请况2: 该子串的字串被分为M个,在该M个子子串中不存在相同.(子串不同:出发的下标不同)解题思路:对于该问题的核心有两点:因为总串的长度比较大,所以判段字符串时否出现相同,不可能用平常的比较方法,第二如何判断两个相同的字符串到底在那个子串中。对于第一点,
2014-07-06 15:51:50
652
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人