2014年3月12日

摘要: 快速傅里叶变化有不同的应用场景,hdu4609就比较有意思。题目要求是给n个线段,随机从中选取三个,组成三角形的概率。初始实在没发现这个怎么和FFT联系起来,后来看了下别人的题解才突然想起来:组合计数问题可以用多项式的卷积来解决。于是将给的数据进行卷积相乘,利用FFT即可求出三角形任意两条线段组合的可能数目。然后遍历初始数据,将其作为最长边(这里一开始也没想明白,其实就是只要最长边大于短边之和,其他两个不等式也自然可以满足)。那么理论上说比它长的所有两边组合可能都可以。当然在这里要考虑三种特殊情况:(即在两边组合数目中减去这些情况)1.这两个边有可能一个边比最长边长,一个边小于最长边2.其中一 阅读全文
posted @ 2014-03-12 17:50 holyprince 阅读(266) 评论(0) 推荐(0) 编辑

2014年3月6日

摘要: 自从去年下半年接触三维重构以来,听得最多的词就是傅立叶变换,后来了解到这个变换在图像处理里面也是重点中的重点。本身自己基于高数知识的理解是傅立叶变换是将一个函数变为一堆正余弦函数的和的变换。而图像处理里则强调它是将图像信息从空间域往频率域转化的重要手段。最近从头学起数字图像处理,看完傅立叶变换之后,对于其中的计算方法快速傅立叶变换产生了好奇。于是搜索了下FFT,发现杭电上有几个这样的题目,其中点击率最高的是hdu1402*大数乘法。大数乘法本来是一个n方的算法,经过FFT之后可以变为nlogn,于是看了下算法导论中多项式与FFT一节,大致弄清楚了FFT的原理和简单实现。1.多项式的两种表示:系 阅读全文
posted @ 2014-03-06 21:53 holyprince 阅读(1074) 评论(0) 推荐(0) 编辑

2013年12月19日

摘要: DFS将递归改为非递归这个方法的需求来自于一道三维积木组合的题目,还在苦苦调试中,暂且不提。普通的认识对于递归向非递归的转化无非是使用栈,但是结合到深度搜索如何将栈很好利用,如何很好保存现场,都不是很轻松(自身感觉)。网上大部分转化都是基于图的搜索进行,总是引出邻接点的概念,让人越看越迷,毕竟不是每个DFS都是图(不可否认都可以看成是图)。在众多资料中看到了CSDN上的一个转化方法很新颖(结构之法,算法之道):http://blog.csdn.net/v_july_v/article/details/6111353。最后一点结合图提出了用队列栈来进行转化,由于伪代码和图有关,而且用到标志什么的 阅读全文
posted @ 2013-12-19 17:32 holyprince 阅读(3776) 评论(0) 推荐(0) 编辑

2013年9月12日

摘要: 以下几个题目来自于:浙大计算机研究生保研复试上机考试-2011年题组。晚上没什么事做着试了一下,没想到是三道模拟题,正巧很久没有做过这种模拟了,不过速度是慢了很多。hdu 3792 Twin Prime Conjecture英文是硬伤,借助百度翻译才看懂这是求孪生素数数目的题目。没有n的范围,假设1000000用筛法打表之后求和。一开始对于时间估计过于乐观,求孪生素数没和求和写在一起,超时了一次。另外:memset是对每个字节赋值,而int有4字节(32位)比如这样,memset(a,1,sizeof(a));则a中的每个元素都被赋值成为2进制数为,0000000100000001000000 阅读全文
posted @ 2013-09-12 00:16 holyprince 阅读(226) 评论(0) 推荐(0) 编辑

2013年9月11日

摘要: STL的排序太坑了,尤其是在VS2010上重载sort函数的第三个比较参数的时候。invalid operator 2 #include 3 #include 4 #include 5 using namespace std; 6 struct Node 7 { 8 int x; 9 int y;10 11 };12 bool Comp(Node &a,Node &b)13 {14 if(a.x==b.x) return b.y>a.y; 15 else 16 return a.x>b.x;17 }18 vector node;19 int... 阅读全文
posted @ 2013-09-11 17:36 holyprince 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 每次考核前都会回忆起这个记了又忘,忘了又记的代码,快排的一些边缘情况的考虑感觉很麻烦,而每次考前时间都很紧迫只能使用一个基本正确的代码: 1 #include 2 int a[4]={-34,9,3,0}; 3 void swap(int &x,int &y) 4 { 5 int t=x; 6 x=y; 7 y=t; 8 } 9 10 int parttion(int a[],int l,int r)11 {12 int i=l,j=r+1;13 int x=a[l];14 while(true)15 {16 while(... 阅读全文
posted @ 2013-09-11 16:24 holyprince 阅读(935) 评论(0) 推荐(0) 编辑

2013年9月1日

摘要: 今天看学长发过来的资料上面提到了中科院机试会有一个二叉树的前序中序得到后序的题目。中科院的代码编写时间为一个小时,于是在七点整的时候我开始拍这个题目。这种类型完全没做过,只有纸质实现过,主体代码半个小时差不多刚好拍完。适应杭电的多数据格式改了5分钟。感觉这个时间有点长,仍须努力。(g++可通过,因为是C++和C的混风) 1 #include 2 #include 3 #include 4 struct node{ 5 node *left; 6 node *right; 7 int num; 8 node() 9 {10 left=NUL... 阅读全文
posted @ 2013-09-01 20:14 holyprince 阅读(242) 评论(0) 推荐(0) 编辑

2013年8月31日

摘要: 下述代码在VS2010上的cpp文件可通过,在杭电OJ上的G++编译项上可通过。 1 #include 2 #include 3 struct student{ 4 student *p; 5 int a; 6 student() 7 { 8 a=100; 9 p=NULL;10 }11 };12 int main()13 {14 student *root=new student();15 printf("%d\n",root->a);16 printf("%s\n",root->p);17 ... 阅读全文
posted @ 2013-08-31 21:21 holyprince 阅读(283) 评论(0) 推荐(0) 编辑
摘要: 估计在OJ上刷过题的都会对AC自动机这个名词很感兴趣,同样,记得去年ACM暑期集训的时候,在最后讲到字符串部分,听说了这个算法的名字之后就对于它心向往之,AC正好是Accept的简称,字面意义上的理解是一个可以让题目自动AC的东西,那这是有多厉害!很多次和同学开玩笑,都会提起这个名词。不过其实毕竟只是个字符串处理的算法,真正学起来还是费了不少力。百度一下就会看到一个模版题:hdu 2222 Keywords Search 1 #include 2 #include 3 #include 4 struct node{ 5 node *fail; 6 node *nex... 阅读全文
posted @ 2013-08-31 19:25 holyprince 阅读(222) 评论(0) 推荐(0) 编辑

2013年8月26日

摘要: 虽然这个题目一遍AC,但是心里还是忍不住骂了句shit!花了一个小时,这个题目已经水到一定程度了,但是我却在反转这个操作上含糊不清,并且还是在采用了辅助数组的情况下,关系的理顺都如此之难。其实我是想到了之前那次保研考试,让给数组里面的数换k位,我也是纠结好久没有写出个所以然,郁闷。 1 #include 2 #include 3 #include 4 char ans[1002]; 5 char temp[1002]; 6 7 void divide(char a[],int n) 8 { 9 int cur=0,j=0,pricur=0;10 for(int i=0;i<n... 阅读全文
posted @ 2013-08-26 22:23 holyprince 阅读(361) 评论(0) 推荐(0) 编辑

导航