上一页 1 2 3 4 5 6 ··· 15 下一页
摘要: 题意比较好理解,但是题目给出的要求却比较麻烦,给出的有向边是有顺序的,后面的边不能用在它前面出现的边,因为题目要求找出的最短路必须是按照给出的顺序,麻烦就麻烦在这,否则一遍bfs就找出最短路了,看到discuss里有人说可以用O(n)过,但是就是没想出来,最后,不得不查了解题报告,看到有人是将点的位置进行连线,相邻位置之间设为1,如果临近的相同元素之间设为0 ,这样从0~n-1找一天最短路就可以了。Hint:n是大于100000,开到10^6差不多,因为这挂在了15组数据上一次了。代码:View Code #include <stdio.h>#include <stdlib. 阅读全文
posted @ 2013-01-28 20:34 Misty_1 阅读(299) 评论(0) 推荐(0) 编辑
摘要: 题意:有N座城市,M条路,求是否有两座城市间的路长度大于等于s。思路:题目中说这条路可以是任意地方开始,任意地方结束,所以只要有一条路大于等于s就可以了。可以先用排除法来确保这个图为无向无环图。1)如果图中有环,输出“YES”;2)如果图中有自环,输出“YES”;3)如果图中有重边,输出“YES” ;在输入的时候判断一下,然后用floyd求最长路,所有路中有一条路长度大于等于s就可以完成。代码:View Code #include <stdio.h>#include <stdlib.h>#include <string.h>#include <iost 阅读全文
posted @ 2013-01-28 13:49 Misty_1 阅读(301) 评论(0) 推荐(0) 编辑
摘要: 题意:乌拉尔锦标赛分为两轮,每轮有N道题,总共有2*N道题,但是在这些题中,有些题目有相似性,这样的题目是不允许放在同一轮里的,题目要求给出合理的题目分组来。分析:刚开始想用BFS搜的,在搜的过程中进行染色,但是最后放弃了这个思路,因为这个图极有可能是不连通的,怎样确定每个连通分支起始点的颜色才能找到一个合理的分组来就成为解题的关键,但是这个却没有一个准确的规律可循,所以只能用分组背包。其实就是先进行一遍dfs的深搜,将每个连通分支的点都分为两种颜色,将每个连通分支作为一组,然后进行dp求解。代码:View Code #include <stdio.h>#include <s 阅读全文
posted @ 2013-01-28 10:32 Misty_1 阅读(264) 评论(0) 推荐(0) 编辑
摘要: http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1446我只想说,读题太重要了,一定一定将题目中的每个要求都弄清楚啊!!!为了这题用了一晚上的时间在那调,结果只是题意没理解到位,输出的地方有问题,要崩溃了!!!!1)最终要求输出的是长度没错,但是要比较的是步数,也就是说,输的那一方跳跃的长度不一定就小于赢得那一方,还有每步的长度,而我是保存了跳跃的总长度,最后的时候比较找较小的。无语。。。。。2)如果两人的步数相等,也就是ZA胜,这种情况下LZ选择的是第一种场景,所以输出的长度应该是第二种场景 阅读全文
posted @ 2013-01-27 09:27 Misty_1 阅读(153) 评论(0) 推荐(0) 编辑
摘要: http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1451今天下午的比赛题,该说自己理解能力太弱还是题目描述有歧义,比赛一开始我就找到了这道题,读完题感觉很容易,于是就用栈模拟了一遍,结果WA,又重新理解了一遍题,感觉应该没什么问题,将各种可能的想了一遍,改完提交还是WA,然后再改,最后终于想不出来还有什么情况了,于是重新读题,还是没弄懂要求输出的是最长合法子串的个数,我一直输出的是合法子串的总数,其实中间我曾想过有可能是让输出最长合法子串的个数,但是不确定,而且题目中给出的是“以及合法子串的个 阅读全文
posted @ 2013-01-26 18:55 Misty_1 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 题意:有N个武士,衡量每个武士的综合实力由三个因素:length of the lightsaber, Force, Light side in this order,如果一个武士的其中任意两项大于另一个武士,那么他会获得胜利,题目要求可能获得最后胜利的那个人。获得最后胜利就是打败所有的人。思路:如果A可以打败B,B可以打败C,C又可以打败A的话,那么总是存在一种方案可以使这其中的任何一人获得最后的胜利,所以先进行缩点,然后建树,此时树的根节点里的所有人都有可能获得最后的胜利。代码:View Code #include <stdio.h>#include <stdlib.h& 阅读全文
posted @ 2013-01-26 08:52 Misty_1 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 删除A、B点之间的连线,然后求两点间的最短路,如果有最短路,加上A、B之间的长度求最小值,就是所要求的最短环。但是还要求输出路径,我是用Spfa求最短路的,同时记录路径。用这种方法做完之后,看到discuss里有许多用floyd求最短环的,就上网搜了一下。原来可以直接用floyd在O(n^3)的时间里求最短环,但是这个标记路径有点麻烦,最终也没想出比较好的记录路径的方法,但是的确求出了最短环。spfa求最短路算法:View Code #include <stdio.h>#include <stdlib.h>#include <string.h>#includ 阅读全文
posted @ 2013-01-25 21:02 Misty_1 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 题意:航空公司有p名飞行员,n条航线,每条航线上都必须有两名飞行员完成,一名正驾驶员,一名副驾驶员,公司规定,正驾驶员的工作年龄要比副驾驶员的多一年,现在给出你n条航线上驾驶员的编号,但是不知道谁是正驾驶,谁是副驾驶,求出这个公司所有驾驶员工作年龄的最大差值,最大差值不得大于50,如果不能满足条件就输出-1 。思路:建图,每条航线上的正副驾驶之间连线,如果这是一个连通图,这直接有bfs枚举每一个点为起点,然后判断是否成立。如果不是连通图,先用dfs标记一下每个点属于那个连通图,然后用bfs判断每个连通图是否满足条件,如果都满足,则最大差值为49 ,如不满足则输出-1 。代码:View Code 阅读全文
posted @ 2013-01-25 09:12 Misty_1 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 题意:幼儿园里有N个盒子,每个盒子有一种颜色,每个盒子中可以装M个与盒子颜色相同的拼图,但是现在有些孩子将拼图放错了盒子,幼儿园老师要将放错的拼图放到正确的盒子里,她每次可以拿一块拼图从这个盒子到另一个盒子,也可以什么都不拿都另一个盒子,问这个老师最少要移动多少次手才能整理好这些拼图。思路:求强连通分支。首先,在同一个强连通分支里的盒子之间是可以互换的,即颜色A的拼图放到了颜色B的盒子了,那么一定可以从颜色B的盒子里取出A然后放回颜色为A的盒子里,然后从A盒子了取出颜色不为A的拼图放回正确的盒子里,所以最少移动的次数就是放错拼图的个数。如果不是一个强连通分支,那么在整理完这个强连通分支里的盒子 阅读全文
posted @ 2013-01-24 17:14 Misty_1 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 寒假集训已经开始几天了,直到搬完宿舍才感觉安定下来,开始静下心了认真学习算法,这几天心无旁骛的学习,效率自然提了上来,感觉以前不熟的算法或是没想透的地方在做过两道题后都可以理解了,好好利用这十几天的集训,提高一下自己的水平吧~题意:IT公司有n名程序员,他们都认为自己是最优秀或第二优秀的程序员,公司的管理者打算将他们分到不同的开发小组里,分配的条件如下:(1、任意选出一名未被分配的程序员,然后给他建立一个开发小组,他作为当前程序员。(2、如果在他的同事中,他认为这个人比他优秀,那么这个比他优秀的人就不能被分配到其他小组,只能分配到这个小组,成为这个小组的当前程序员。题目要求这n名程序员最多和最 阅读全文
posted @ 2013-01-23 21:16 Misty_1 阅读(215) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 15 下一页