2013年8月19日
摘要: http://poj.org/problem?id=2299题意 : 排序,求排序次数,本来以为用冒泡可以搞定,事实上,那么大的数据以及一个TLE告诉我,会超时.........思路 : 问了一下,这个题就是归并排序求逆序数,可以百度一下,看了白皮书#include#include#includeusing namespace std ;int A[500400],T[500400];long long cnt ;void merge_sort(int* A,int x,int y,int* T){ if(y-x>1) { int m = x+(y-x)/2 ; ... 阅读全文
posted @ 2013-08-19 21:03 枫、 阅读(177) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=3080题意 : 给你几个DNA序列,让你找他们的共同的最长的子串,若是子串长度小于3,就输出no significant commonalities,否则就输出公共的那个子串,若是多个子串长度相同,就输出字典序最小的那一个子串。思路 : 这个题的话就暴搜加枚举。。。。。。 1 #include 2 #include 3 #include 4 using namespace std ; 5 int main() 6 { 7 char ch[110][110],sh[110],zh[110]; 8 int m ; 9 s... 阅读全文
posted @ 2013-08-19 20:22 枫、 阅读(227) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=3253就是一个哈夫曼树,题目下边有提示,所以题意还是好理解的#include#include#include#includeusing namespace std;int main (){ map tra; char s[100011], str[100011], s1[100011]; while (gets(s)&&s[0]) { sscanf(s,"%s %s",str,s1);//将输入的字符串,空格前边的赋给str串,后边的赋给s1串 tra.insert(pair(s1,str... 阅读全文
posted @ 2013-08-19 16:00 枫、 阅读(168) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=1611这个题的话一看就知道是并查集,0号是已经被感染的,凡是与0号在一组的都是感染者 1 #include 2 #include 3 #include 4 using namespace std ; 5 int bing[30100],a[30100]; 6 int findx(int x) 7 { 8 int r = x ; 9 while(bing[r] != r)10 r = bing[r] ;11 return r ;12 }13 int findy(int x)//递归往下找一组的14 {1... 阅读全文
posted @ 2013-08-19 15:57 枫、 阅读(145) 评论(0) 推荐(0) 编辑
  2013年8月16日
摘要: http://poj.org/problem?id=1125题意 :就是说想要在股票经纪人中传播谣言,先告诉一个人,然后让他传播给其他所有的经纪人,需要输出的是从谁开始传播需要的时间最短,输出这个人的编号和传播需要的最短的时间;思路 : 典型的最短路问题,就是求最短传播时间,用floyd求出两两最短路。一般来说,因为告诉一个经纪人之后,他可以同时给其他他可以传播的所有人进行传播,所以,只要找到他需要传播的许多人中,找那个传播时间最长的,就能保证他可以给所有他能传播的人都传播到这个谣言,而其余他不能传播到的人,就要靠已传播的人继续往下传播。找n个人中以每个人为开始点的时候传播到所有人中的最长的那 阅读全文
posted @ 2013-08-16 19:24 枫、 阅读(291) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=2253题意 : 题目是说,有这样一只青蛙Freddy,他在一块石头上,他呢注意到青蛙Fiona在另一块石头上,想去拜访,但是两块石头太远了,所以他只有通过别的石头跳过去,所以,从他的石头到Fiona的石头每一条可走的路,假设是n条,就需要你求出frog distance,这个所谓的距离就是指这n条路中,每条路选取组成这条路中最长的那边,最后一共有n条边,找这n条边里最短的那一条输出。思路 : 就是一个最短路的问题,不过不需要求最短路的权值和,只需要求出最大跳即可,还要注意,不管几行坐标,前两行分别是Freddy的位置和Fiona的位置,最后 阅读全文
posted @ 2013-08-16 11:12 枫、 阅读(258) 评论(0) 推荐(0) 编辑
  2013年8月15日
摘要: 题意 : 真真是做POJ第一次遇到中文题,好吧,虽然语言通了,我一开始也没看懂样例什么意思,题意的话就是说这个探险家想娶酋长的女儿,但是没有钱,酋长说他可以用祭司的水晶球或者皮袄来换取少花一部分钱,同样的祭司也提出了类似的要求。最后输出能够花的最少的钱去迎娶酋长的女儿。这个题需要注意的点是:1.等级问题,等级相差过大的话,不与探险家交换; 2.而每一个物件,编号自1到n是已经默认的,所以不用再去赋值或者迷惑了。。思路 :就是一个最短路的问题,Dijkstra还有 Bellman ford 以及spfa都可以去求,不过倒是不知道为什么,大神们统一用的Dijkstra去... 阅读全文
posted @ 2013-08-15 21:35 枫、 阅读(273) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=3259题意 : 农夫约翰农场里发现了很多虫洞,他是个超级冒险迷,想利用虫洞回到过去,看再回来的时候能不能看到没有离开之前的自己,农场里有N块地,M条路连接着两块地,W个虫洞,连接两块地的路是双向的,而虫洞是单向的,去到虫洞之后时间会倒退T秒,如果能遇到离开之前的自己就输出YES,反之就是NO。样例解释 :23 3 11 2 21 3 42 3 13 1 33 2 11 2 32 3 43 1 8第一行中的2代表有两组测试数据,第一组测试数据中,3,3,1代表着有3块地,3条路,1个虫洞,下面三行代表着编号几到几的权值是几,最后一行代表的是通 阅读全文
posted @ 2013-08-15 10:16 枫、 阅读(238) 评论(0) 推荐(0) 编辑
  2013年8月14日
摘要: http://poj.org/problem?id=2240题意 : 好吧,又是一个换钱的题:套利是利用货币汇率的差异进行的货币转换,例如用1美元购买0.5英镑,1英镑可以购买10法郎,一法郎可以购买0.21美元,所以0.5*10*0.21 = 1.05,从中获利百分之五,所以需要编写一个程序,在进行完转换之后能不能获利,如果能就输出Yes,反之No;样例解释 :3USDollarBritishPoundFrenchFranc6USDollar 0.5 BritishPoundUSDollar 4.9 FrenchFrancBritishPound 10.0 FrenchFrancBritis 阅读全文
posted @ 2013-08-14 16:04 枫、 阅读(209) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=2485题意 : 这道题和1258很像,但是这道题求的是最小生成树中最大的那条边,所以在函数里处理一下就行了。思路 : 赤裸裸的最小生成树啊,但是这道题一定要注意,因为底下有提醒,一定要用scanf输入,结果我就很悲剧的没看到啊,然后一直改一直改,到最后又去看了一遍题才发现要用scanf啊,╮(╯▽╰)╭ 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 int ans,dis[5005][5005]; 7 const int INF = 1 low[j] 阅读全文
posted @ 2013-08-14 13:57 枫、 阅读(278) 评论(0) 推荐(0) 编辑