Visitors hit counter dreamweaver
上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 26 下一页
摘要: 参考:http://blog.csdn.net/lyy289065406/article/details/6647445 http://www.slyar.com/blog/poj-2513-c.html(谢谢他们) 这题主要是会把问题给转换为求Euler回路,即一笔画成并且不重复,反正我是想不到这点。把所有的端点当成顶点,木棍当成回路。这样就可以用判断是否能构成Euler回路来判断是否能连成一条直线。而判断是否能构成欧拉回路主要是根据它的两条性质:1.图是连通的;2.奇数节点的个数为0或者2。 对于判断图是否是连通的,我们可以用并查集来判断,如果是连通的,那么所有节点的fahter节点都应. 阅读全文
posted @ 2012-04-16 12:02 Jason Damon 阅读(350) 评论(0) 推荐(0) 编辑
摘要: 学了Trie树(学习Trie树相关的内容,猛搓这!),来做这题,感觉挺简单的,边输入边判断是否存在是否有前缀(prefix),这样的话要考虑两种情况,一种是前面的某个串是该串的前缀,或者该串是前面某个串的前缀。 写完,提交,TLE!!原来不能用动态建树的方法,必须用静态树! 后来再提交,WA。。。哎。纠结死我了。跟别人的对比了下,觉得自己的也没错啊...真不知道错在哪了。下面贴出代码,求大牛指导! 最后看了discuss里面前辈给出的程序,把自己的改了下,是先排序,然后再Insert,这样可以少考虑一种情况。然后再把静态树的数组开大点,不然还是会WA的!最后终于AC了。AC代码:#inclu. 阅读全文
posted @ 2012-04-15 22:03 Jason Damon 阅读(1706) 评论(0) 推荐(0) 编辑
摘要: 今天把Trie树彻底的看了下。发现网上有两篇非常好的文章,通过他们的博客,我对Trie树有了大题的了解。并且通过理解 消化 综合他们的知识,再结合我自己的编程爱好,我也把具体的程序实现了一遍,这样能对Trie树有更加深刻的认识!他们是:勇幸|Thinking 和 Maik。感谢他们。下面的分析也是从他们的博客摘抄以便理解的。Trie原理Trie的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。Trie性质好多人说trie的根节点不包含任何字符信息,我所习惯的trie根节点却是包含信息的,而且认为这样也方便,下面说一下它的性质1.字符的种数决定每个节点的出.. 阅读全文
posted @ 2012-04-15 12:21 Jason Damon 阅读(7901) 评论(2) 推荐(0) 编辑
摘要: 解题思路:转自:http://blog.csdn.net/lyy289065406/article/details/6647423 分析得非常好!!利用Huffman思想,要使总费用最小,那么每次只选取最小长度的两块木板相加,再把这些“和”累加到总费用中即可本题虽然利用了Huffman思想,但是直接用HuffmanTree做会超时,可以用优先队列做因为朴素的HuffmanTree思想是:(1)先把输入的所有元素升序排序,再选取最小的两个元素,把他们的和值累加到总费用(2)把这两个最小元素出队,他们的和值入队,重新排列所有元素,重复(1),直至队列中元素个数<=1,则累计的费用就是最小费用 阅读全文
posted @ 2012-04-14 23:14 Jason Damon 阅读(978) 评论(0) 推荐(0) 编辑
摘要: 看到别人写的,觉得比较经典,存下来。语言是基础, 算法是灵魂, 思维是资本, 经验使历史。 做人做事交朋友是根本 阅读全文
posted @ 2012-04-14 23:06 Jason Damon 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 现在大三了,很多同学都开始找实习工作了。忙着去面试。偶然看到这篇文章,觉得讲得不错,就转发了。转自:http://topic.csdn.net/u/20091007/14/704a89ee-dc71-4e85-b0b0-92fb4ec44dcf.html做过无数笔试题,做过无数面试题,基本上没遇到过很重视语言细节的语言本身方面,可能会问问虚函数和多态,重载,作用域,存储方式,字节对齐,一般问的不多,或者根本不问相反,对待你不懂XX语言上,往往表现的相当宽容,我面试时坦言自己只会一点C,对方也表示没有关系,而我目标职位没有一个跟C是有点关系的比较重要的是,基本数据结构和算法,大规模数据处理技巧, 阅读全文
posted @ 2012-04-14 23:00 Jason Damon 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 这题和poj2299是一样的。而且测试数据还没那么强。当刷题吧~#include <iostream>#include <fstream>using namespace std;int a[1005],t[1005]; //t[]为暂存数组int cnt;void Merge(int l,int m,int r){ int i=l,j=m+1,k=0; while(i<=m && j<=r) { if(a[i]>a[j]) { cnt+=m-i+1; //a[j]是i以及i后面的逆序数 t[k++]... 阅读全文
posted @ 2012-04-14 16:00 Jason Damon 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 时间复杂度O(nlog2n)归并排序:void Merge(int l,int mid,int r){ int i=l,j=mid+1,k=0; while(i<=mid && j<=r) { if(a[i]>a[j]) { t[k++]=a[j++]; cnt+=mid-i+1; } else { t[k++]=a[i++]; } } while(i<=mid) t[k++]=a[i++]; while(j<=r) t[k++]=a[j++]; //将归并完成的结果复制到原数组中 for(i=0; i<k; i++) { a[l+i]=t[ 阅读全文
posted @ 2012-04-14 01:00 Jason Damon 阅读(333) 评论(0) 推荐(0) 编辑
摘要: 陷阱啊!一开始我用冒泡排序(Bubble Sort)来统计。。晕,TLE。each case 50w.而一趟冒泡排序需要进行的是n-1,n-2,……,2,1,0的和次比较。即n*(n-1)/2次。总的时间复杂度为O(n^2).肯定是吃不消的。 于是,可以用归并排序来求它的逆序数,逆序即为它总共需要变换的次数。这样时间复杂度是nlog2n,而空间复杂度2n。利用归并求逆序关键是对子序列s1和s2在归并时(s1,s2已经排好序),若s1[i]>s2[j](逆序状况),则逆序数加上s1.length-i,因为s1中i后面的数字对于s2[j]都是逆序的。参考:http://www.slyar.c 阅读全文
posted @ 2012-04-14 00:54 Jason Damon 阅读(511) 评论(0) 推荐(0) 编辑
摘要: 纯纯的水题。#include <iostream>#include <fstream>#include <cstdlib>using namespace std;int a[1000005];int cmp(const void*a,const void*b){ return *(int*)a-*(int*)b;}int main(){ int n,i; freopen("acm.txt","r",stdin); scanf("%d",&n); for(i=0; i<n; i++) s 阅读全文
posted @ 2012-04-13 21:59 Jason Damon 阅读(161) 评论(0) 推荐(0) 编辑
上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 26 下一页