摘要: 这道题WA了好多次、测试数据感觉有点问题……并查集啊,必须有。#include#includeint ad[1003];int f[1003];int find(int x){ if(f[x]==x){ return x; }else return f[x]=find(f[x]);}int main(){ int n,m,a,b,i; while(scanf("%d",&n)&&n) { scanf("%d",&m); memset(ad,0,sizeof(ad)); for(i=1;ib){ a=a^b^(b=a); } 阅读全文
posted @ 2014-03-10 21:01 dengyaolong 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 今天广州下雨啦,不过没关系啦,反正我最近也都在刷题学习算法。昨天做了五题01背包,今天还是背包,不过是完全背包,估计做动态规划要持续好一段时间,一开始选了一道简单题目啦。HDU1114,看了小一段时间,动手打代码,测调后感觉很NICE,交上去就WA了。后来,是我的MAX值给得太小了。果断加两个零,马上就A掉了。完全背包的思路和01背包很相似,就是在循环时候有点不同。01背包的是: memset(dp,0,sizeof(dp)); memset(v,0,sizeof(v)); memset(w,0,sizeof(w)); for(i=1;i=v[i];j--)... 阅读全文
posted @ 2014-03-09 11:10 dengyaolong 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 今天一直在写背包,不过中间停了一段时间在写shell。一直在做01背包。今天做了这两题很相似的背包首先是HDU1203Speakless很早就想出国,现在他已经考完了所有需要的考试,准备了所有要准备的材料,于是,便需要去申请学校了。要申请国外的任何大学,你都要交纳一定的申请费用,这可是很惊人的。Speakless没有多少钱,总共只攒了n万美元。他将在m个学校中选择若干的(当然要在他的经济承受范围内)。每个学校都有不同的申请费用a(万美元),并且Speakless估计了他得到这个学校offer的可能性b。不同学校之间是否得到offer不会互相影响。“I NEED A OFFER”,他大叫一声。帮 阅读全文
posted @ 2014-03-08 22:19 dengyaolong 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 动态规划,我一直都不熟悉,因为体量不够,所以今天开始努力地学习学习。当然背包从01开始,先选择了一个简单的经典的背包HDU2602。Many years ago , in Teddy’s hometown there was a man who was called “Bone Collector”. This man like to collect varies of bones , such as dog’s , cow’s , also he went to the grave …The bone collector had a big bag with a volume of V ,a 阅读全文
posted @ 2014-03-08 13:24 dengyaolong 阅读(290) 评论(0) 推荐(0) 编辑
摘要: 前天,终于入手了一些一直想买的书,比如《算法导论》、《编程珠玑》。在数学科学学院,我不能把自己当作一个计算机学院的人,所以我一直没过多的时间去研究算法,之前的我好像更多的时间是花在做一些证明题。今天在读《编程珠玑》的时候,第一章的习题提出了一个问题,重点是要求利用逻辑运算解决。逻辑运算,怎么我没什么概念,于是,稍微恶补了一下,也顺便记下一些有用的。当然,其优点很明显,就是快。1.int x=pow(2,n) 相当于,x=1>31;x=(x^y)-y6.交换a,b ,相当于 a=a^b^(b=a); 阅读全文
posted @ 2014-03-06 21:50 dengyaolong 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 这学期我们终于开始学习算法设计。第一次实验室实现斐波那契的四种算法,递归,非递归,公式法,矩阵相乘法。当然,这些都是很基础的啦。上机的时候,受到编译环境的问题(是不是高校都喜欢配置VC6.0?)让我很是郁闷,比如说long long无法用了,要用__int64,而__int64不支持cout操作。最后只能用scanf,printf等等保持统一风格#include#include#include#include#includeusing namespace std;#define N 2/*dicription:实现计算fibonacci的递归算法,线形for循环算法注意在vc6.0下:1.只能 阅读全文
posted @ 2014-03-04 09:14 dengyaolong 阅读(497) 评论(0) 推荐(0) 编辑
摘要: 最近很无聊啦,去hdu随便翻翻,做一些题来解闷。看到1042题目,就是求大数阶乘,话说,大数的题目我还没有认真写过!为什么?我看到大数就会用java写了~(觉得自己好颓废,总是取现成的东西……)题目就是很简单啦,求0到10000的阶乘首先,我很快速地用c++写了一下代码,觉得没问题,就是计算10000!阶乘觉得很慢。觉得肯定会tle。但是再认真一看竟然时间限制是5000MS真是很完美。之后我就很高兴地交了上去,后来发现。RuntimerError.不够内存啊!!!!我第一次用指针int * fact以及malloc啊,我能说我一直都用vector等吗?竟然出错了……后来我发现我没有free(f 阅读全文
posted @ 2014-03-02 14:09 dengyaolong 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 前言: 首先这是一题解,但是重点最代码之后,有耐心的可以直接从代码后看。上题目:n个人,每个人都有一件礼物想送给他人,他们决定把礼物混在一起,然后每个人随机拿走一件,问恰好有m个人拿到的礼物恰好是自己的概率是多少? 输出结果四舍五入,保留8位小数,为了保证精度,我们用字符串作为返回类型。 输入:n,m (0#include #include using namespace std; double jcf(int r){ //计算 1/r! ; double res=1; for(int i=1;i=2); 即有 A_n- ... 阅读全文
posted @ 2014-03-01 12:54 dengyaolong 阅读(348) 评论(0) 推荐(0) 编辑
摘要: 2·14 情人&元宵节专题:半质数的个数。题目:质数是大家熟知的概念,我们定义一个半质数的概念:如果一个数恰好是两个质数的乘积(可以相同),则称它为半质数。前几个半质数是 4, 6, 9, 10, 14, 15, 21, 22, 25, 26。我们的问题是,输入两个正整数x#include #include #include using namespace std;#define N 2000000bool prime[N];bool dp[3*N];int first=1;void fun1(){ memset(prime,1,sizeof(prime)); memset( 阅读全文
posted @ 2014-03-01 11:00 dengyaolong 阅读(313) 评论(0) 推荐(0) 编辑
摘要: 题目: 一个整数N,|N| >= 2, 如果存在整数x,使得N = x * x * x... (p个x相乘)=x^p,则称N是p次方数,给定32位内的整数N,求最大的P。例如N=5,输出1,N=36则输出2。分析: 其实我是水过的。X从2到sqrt(N)便利,如果res=logN/logX在容许误差内就返回(int)(res+0.5).注意: 1.输入为2147483648。 2.输入为负数时候。得到的(int)(res+0.5)要是奇数才返回,不然返回1(很明显)。 3.容差要足够小。最后: 祝大家轻松水过。 过了好长一段时间了,贴上代码吧。/********************* 阅读全文
posted @ 2014-02-24 22:39 dengyaolong 阅读(183) 评论(0) 推荐(0) 编辑