上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 25 下一页
摘要: 题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1500DescriptionInput输入文件的第1行包含两个数N和M,N表示初始时数列中数的个数,M表示要进行的操作数目。 第2行包含N个数字,描述初始时的数列。 以下M行,每行一条命令,格式参见问题描述中的表格。Output对于输入数据中的GET-SUM和MAX-SUM操作,向输出文件依次打印结果,每个答案(数字)占一行。Sample Input9 82 -6 3 5 1 -5 -3 6 3GET-SUM 5 4MAX-SUMINSERT 8 3 -5 7 2DELETE 12 .. 阅读全文
posted @ 2013-07-31 12:55 zhsl 阅读(701) 评论(0) 推荐(0)
摘要: 题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1269 Description这些日子,可可不和卡卡一起玩了,原来可可正废寝忘食的想做一个简单而高效的文本编辑器。你能帮助他吗?为了明确任务目标,可可对“文本编辑器”做了一个抽象的定义:文本:由0个或多个字符构成的序列。这些字符的ASCII码在闭区间[32, 126]内,也就是说,这些字符均为可见字符或空格。光标:在一段文本中用于指示位置的标记,可以位于文本的第一个字符之前,文本的最后一个字符之后或文本的某两个相邻字符之间。文本编辑器:为一个可以对一段文本和该文本中的一个光标进行如... 阅读全文
posted @ 2013-07-29 15:36 zhsl 阅读(402) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3487 对于一个数列有两种操作:1.CUT a b c,先取出a-b区间的数,然后把它们放在取出后的第c个数后面。2.FLIP a b,把区间a-b的数反转。对于第一个操作,进行两次区间移动,第a-1个数Splay到根节点,b+1个数Splay到root的右儿子,ch[ch[root][1]][0]则表示那个区间,然后把它们除掉,然后在移动区间,把第c个数Splay到root,第c+1个数Splay到root的右儿子,再把刚才的区间加上即可。第二次操作每个节点标价一下,表示他的儿子是否反转,用... 阅读全文
posted @ 2013-07-29 11:56 zhsl 阅读(363) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4619 一看就知道是二分匹配题目,对每个点拆点建立二分图,最后答案除2。因为这里是稀疏图,用邻接表处理。。。 1 //STATUS:C++_AC_31MS_480KB 2 #include 3 #include 4 #include 5 //#include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #in... 阅读全文
posted @ 2013-07-28 20:27 zhsl 阅读(207) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4618 直接暴力枚举中心点,在中间如果求不出最大值直接跳过优化下。。。 1 //STATUS:C++_AC_31MS_800KB 2 #include 3 #include 4 #include 5 //#include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15 #include ... 阅读全文
posted @ 2013-07-28 20:12 zhsl 阅读(273) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4616 比较典型的树形DP题目,f[u][j][k]表示以点u为子树,经过 j 个陷阱的最大值,其中k=0表示从u点出发,k=1表示终点为点u。则转移方程为:f[u][j+is_rtap][k]=Max{ f[v][j][k] | v为u的儿子节点,0 3 #include 4 #include 5 //#include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 ... 阅读全文
posted @ 2013-07-28 20:08 zhsl 阅读(577) 评论(0) 推荐(1)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4614 线段树保存区间是否被覆盖以及区间的和即可,在询问的时候在线段树上二分查找就可以了。。。代码写得比较挫> 3 #include 4 #include 5 //#include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15 #include 16 #include 17 #inclu... 阅读全文
posted @ 2013-07-28 18:24 zhsl 阅读(219) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4612 简单图论题,先求图的边双连通分量,注意,此题有重边(admin还逗比的说没有重边),在用targan算法求的时候,处理反向边需要标记边,然后缩点,在树上求最长链。。 此题在比赛的时候,我的模板数组开小,WA一下午,sd。。。。 1 //STATUS:C++_AC_734MS_37312KB 2 #include 3 #include 4 #include 5 //#include 6 #include 7 #include 8 #include 9 #... 阅读全文
posted @ 2013-07-28 18:20 zhsl 阅读(296) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4611 先求出循环节,然后比较A和B的大小模拟过去。。。 1 //STATUS:C++_AC_15MS_436KB 2 #include 3 #include 4 #include 5 //#include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15 #include 16 #in... 阅读全文
posted @ 2013-07-28 18:14 zhsl 阅读(283) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4605 题意:给一颗树,每个节点有个权值w[u],每个节点只有两个儿子或者没有儿子,从根节点放下一个小球,小球有一个权值X: 1.如果X=w[u],小球停止下落。 2.如果Xw[u],小球往左儿子的概率为1/7,往右儿子的概率为7/8。 现在有m个询问,表示重量为x的小球到达v节点的概率。 首先离散化节点的权值。考虑从根节点到达v节点是一条路径,那么我们可以深度遍历树的每个节点,对于很多节点的询问都会经过相同的路径,因此我们可以保存前面的经过的点的重量的数目,因为左边和右边的情... 阅读全文
posted @ 2013-07-28 18:09 zhsl 阅读(301) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3436 树状数组做法 Splay tree的经典题目,有删除和移动操作。首先要离散化各个点,而且对于没有区间还要缩点。对于Top操作,先把目标节点删除,然后移到最左端。Query操作,Splay(tar,0),然后直接访问size。对于Rank操作,通过size产找即可。注意,在每次更新后,都要把处理过的节点都要Splay(tar,0)才能保证复杂度为O(log n),因为这样才能方便下次的访问,因为这个TLE了一个下午+一个晚上。。。。Splay()操作太神了。。 1 //STATUS:... 阅读全文
posted @ 2013-07-24 23:29 zhsl 阅读(569) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1890 题目中涉及数的反转和删除操作,需要用Splay tree来实现。首先对数列排序,得到每个数在数列中的下标x。Splay tree的每个节点标记以它为根的子树是否需要反转,用到懒惰操作,保证nlogn,在每次操作的时候Push_Down()和Push_Up。在建树的时候是数的下标为节点标号建立数,如果要询问数num[i],则把num[i]在数列中的下标旋转到根节点root,size[ch[root][0]]+已经排好序的数的数目就是答案。注意,这里因为涉及到数的反转操作,因此在Splay... 阅读全文
posted @ 2013-07-24 11:12 zhsl 阅读(304) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4608 直接暴力枚举,没什么好说的。。。。 1 //STATUS:C++_AC_765MS_740KB 2 #include 3 #include 4 #include 5 //#include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15 #include 16 #include ... 阅读全文
posted @ 2013-07-23 22:35 zhsl 阅读(242) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4607 首先考虑找一条最长链长度k,如果mk+1,那么最长链上还有其他分支,来回走一遍,因此答案为2*m-k-1。。。求最长链可以DP,两次BFS或者DFS等。。 1 //STATUS:C++_AC_453MS_3524KB 2 #include 3 #include 4 #include 5 //#include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 ... 阅读全文
posted @ 2013-07-23 22:33 zhsl 阅读(335) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4604 因为deque最后的数列是单调不降的,因此,我们可以枚举数列中的某个中间数Ai,如果从中间数Ai开始,如果后面的要和这个中间数形成单调不降的序列,那么后面的数必须是单调不降或者单调不升的序列,才能进入deque中,因此为两者长度的和,这就是一个LIS的DP。然后枚举的时候从后往前枚举,复杂度O( n*log n)。这里要注意一点,存在相同元素,因此需要减去两个里面出现Ai次数的最小值! 1 //STATUS:C++_AC_281MS_3768KB 2 #include 3 #i... 阅读全文
posted @ 2013-07-23 22:27 zhsl 阅读(376) 评论(0) 推荐(0)
上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 25 下一页