上一页 1 2 3 4 5 6 7 ··· 15 下一页
摘要: 上个星期不清楚比赛时间,原以为是周天呢,所以周六没来,错过了比赛,想找个时间把题做一做,但一直忙着复习,终于还是抽空把它做完了,其实题目不难,都是关于数据结构的,不过时间有点远了,做起来还是要费点时间的,权当复习数据结构了吧。Not so Mobile题意:给出一棵二叉树,只有叶子节点有重量,二叉树平衡的条件是DL*WL == DR *WR,递归的给出二叉树中的DL、WL、DR、WR,判断一下二叉树是否平衡。解题过程:递归的输入,如果WL和WR都不为0,判断是否平衡,然后回溯判断是否平衡。开始的时候忘了判断中间的点是否平衡,所以一直WA。还有一种说法是,只判断叶子节点是否平衡就可以了,没验证, 阅读全文
posted @ 2012-12-03 21:50 Misty_1 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 好久没写博,最近做的题有点杂,先是在上周五夜里做了场CF,然后在完全没休息好的周六下午做了场队内比赛,战况惨烈啊,接下来的这个星期就一直在整理这两场比赛的题。先说说CF上的比赛吧。A. Dividing Orange一如既往的水题,就不说了。B. Undoubtedly Lucky Numbers求由0~9中的任意一个或两个组成且小于等于N的数的个数。读完题后没想法,又想到以往B题都是数论题,于是放弃B题转攻C题,最后的时候又看了一遍题觉得应该是组合数学,但是各种情况需要处理,有点繁琐,所以就没做。不过赛后看别人的代码貌似都是有DFS暴力搜的,的确这种做法很巧妙,但我却没想到,唉,还是不能真正 阅读全文
posted @ 2012-11-22 21:43 Misty_1 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 题意:一个网络中有N台电脑,M条线路,现在任意两台电脑都可以互相通信,但是有些线路是重要的,如果破坏了他们,那么这个网络就不连通了,我们称这样的线路为“桥”,如果向网络中加入一些线路,问加入线路后的网络中有多少“桥”。思路:先求出强连通分支,缩点形成一个树,如果加入线路的两点在同一分支中,那么这条线路就没什么用了,直接输出cnt就可以了,如果这两点不在同一分支中,那么就相当于向一根树中加入一条边,然后将从这两点到他们最近公共祖先的线路都去掉就是现在网络中的“桥”的数量。这题不限时间,LAC用最原始的方法都能过,因为对LAC的两种求法都不太熟悉,所以就用了最原始的方法。代码:View Code 阅读全文
posted @ 2012-11-15 20:15 Misty_1 阅读(820) 评论(1) 推荐(0) 编辑
摘要: 题意:亚瑟王座下有N个骑士,他们要坐在一张圆桌上议会,但是你知道,骑士的脾气总是很暴躁的,如果相邻的两个骑士的意见不同,他们就会动用武力,亚瑟王为了使议会顺利进行,要求巫师梅林设计一种方案,使任意两个互相讨厌的骑士都不坐在一起,圆桌上的人必须是奇数个,因为他也许会为一个问题进行投票,不希望出现票数相等的情况,当然也不能只有一个人,因为一个人根本不用开什么会议嘛,给出互相讨厌的骑士的连接关系,最后不能参加会议的骑士就会被开除,现在亚瑟王想知道最少要开除多少骑士。思路:建图很简单,就是给出的连接图的补图,求强连通分量也很容易想到,以为任意个强连通分量中的两个人都不是互相讨厌的,但是对于人数必须的奇 阅读全文
posted @ 2012-11-13 17:29 Misty_1 阅读(815) 评论(0) 推荐(0) 编辑
摘要: 题意:一个国家有N个城市,有M条路连接这N个城市,通过这些路任意两个城市都可以互达,现在为了游客的安全,决定重新修葺一下这些路,但是为了能方便游客,需要新修一些路,使得任意两城市间都有两条路。思路:先求强连通分支,然后缩点,这样就形成了一个树,找到叶子节点ans,只要修(ans+1)/2条路就可以达到目的了。代码:View Code #include <stdio.h>#include <stdlib.h>#include <string.h>#include <iostream>#include <algorithm>#includ 阅读全文
posted @ 2012-11-13 16:50 Misty_1 阅读(143) 评论(0) 推荐(0) 编辑
摘要: D. Boring Partition其实这就是一道想法题,题意是:给出N个数和一个非负数H,将这N个数分成两个集合,可以有一个集合为空,给出一个计算公式f(i,j) = a[i] +a[j] (如果i != j && a[i] a[j] 在同一个集合),f(i,j) = a[i] +a[j] +h(i!=j && a[i] a[j] 不在同一个集合里),让你求出一种分法使得f(i,j)中的最大值与最小值的差值最小。解题过程:刚开始想的是用两个优先队列,然后从头开始遍历,每次只要和队列中的最大值最小值进行计算就行了,这样一遍就可以找出最值,但是纠结的是不知道初始 阅读全文
posted @ 2012-11-09 11:03 Misty_1 阅读(179) 评论(0) 推荐(0) 编辑
摘要: B. Easy Tape Programming这是前几天CF比赛上的B题,应该不算一道难题,但是题意很难理解,至少我读了三遍都没理解,最后弄明白了也就知道怎么做了。现在来说说这道题的题意。有一个程序语言是由'<'、'>'、0~9这些字符组成的,而这个程序的执行规则是,有两个指针,一个CP指针指向某个字符,还有一个DP来决定CP指针向哪个方向移动,初始的时候CP指针指向最左边的字符,DP指针向右的,然后开始移动CP,当CP前一个指向的是数字的时候,那个数字自减一,如果这个数字减到了0,那么就把这个数字从字符串中删除,如果前一个指向的是'< 阅读全文
posted @ 2012-11-07 17:19 Misty_1 阅读(355) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=3114题意:给出N个城市和M条路,每封信可以从城市A到城市B花费时间ci,但路是单向的,如果两个城市可以互达,则这两个城市属于同一个国家,而一封信在同一个国家间传递不花费时间,然后给出K组查询,问从X到Y所花的最小时间。解题过程:这题和poj上的3592一样,先求出图中的强连通分支,缩点后去最短路,用的spfa求最短路,discuss里有人说floyd会超时,所以直接用了spfa,但是开始的时候数组开小了,找了好久才找出来。代码:View Code #include <stdio.h>#include <stdlib.h& 阅读全文
posted @ 2012-11-04 19:50 Misty_1 阅读(146) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=3072最近为了CF上的一道题,又把强连通分支的tarjan算法看了一遍,为了加深印象,就做了HDU上的这题。。。。题意:有一个情报系统,要从0开始传播一个情报,如果两个人可以互达那么两人之间的传播费用为0 ,否则两人之间的传播费用为ci,求要情报传达到每个人的最小费用。思路:既然一个强连通分支内的传播费用为0,求图中有几个强连通分支,缩点后求各点之间的最小费用。代码:View Code #include <stdio.h>#include <stdlib.h>#include < 阅读全文
posted @ 2012-11-03 11:28 Misty_1 阅读(208) 评论(0) 推荐(0) 编辑
摘要: A.Ring road想了N题,甚至重新学习了一遍强连通分支,但事实上,它是用dfs做的,郁闷啊!题意:有N个城市,原来每个城市之间有一条双向路,但是为了交通安全全都改成了单向路,每条路的费用为ci,求为了使任一城市都能到达其他个城市需要增加路的最小费用。解题过程:原来是想找一下图中有几个强连通分支,强连通分支中的任意两个城市一定是互达的,缩点后求各点之间的最小费用,不过这个想法连第一个样例都过不了,因为不需要在每两个点之间都建一条路,而是任意两点可以借助其他缩点互达即可,所以缩完点后,还要求一个强连通图最小权值,这个问题暂时还没想到方法,所以只好放弃。参考了一下别人的思路,似乎都是用dfs做 阅读全文
posted @ 2012-11-03 11:00 Misty_1 阅读(248) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 15 下一页