上一页 1 ··· 8 9 10 11 12 13 下一页
摘要: 链接:http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1353这道题是给一个数n要找出以n为最小公倍数的数对个数比如(3,4)的最小公倍数为12那(3,4)就算其中的一对,而对于(a,b)如果a!=b则(a,b)与(b,a)也算是不同的一对。这道题是一道数论题,要求能明白lcm(a,b)*gcd(a,b)=a*b的具体推导,假设a=p1^a1*p2^a2*p3*a3.........*pk^ak即为a的标准因子分解,假设其最小公倍数的标准分解也是这种形式,即c=p1^a1*p2^a 阅读全文
posted @ 2012-04-16 17:09 zhenhai 阅读(255) 评论(0) 推荐(0)
摘要: 链接:http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1339这道题是用dijkstra求最短路径,然后找出三个点到一个点的最小路径总和,数据量很大,所以一般朴素的dijkstra会超时,所以采用堆优化,纠结啊,调了一天,最后才想明白怎么处理不可达的情况,这是很多网上给出的堆优化难以解决的问题,也算是学了些东西了。其实学ACM重要的就是这种耐心和灵感。View Code 1 #include<iostream> 2 #include<cstdio> 3 #i 阅读全文
posted @ 2012-04-11 21:10 zhenhai 阅读(333) 评论(0) 推荐(0)
摘要: 链接:http://poj.org/problem?id=2309这道题是给出了这样的结构的一棵树,要找的是给一个根的值,找出这个树节点的最大值和最小值。我们可以很容易观察到每个节点所处的高度是和其包含的2的个数所决定的,而且其左儿子的递减速度为4-2-1,右儿子的递增素速度为4-2-1,那么我们只要将其二进制的最后一个1挪到最后一位,就可得到其最小值,将其二进制的最后一个1后面所有的0都置一就可以得到最大值View Code 1 #include<stdio.h> 2 int main() 3 { 4 int t; 5 scanf("%d",&t); 阅读全文
posted @ 2012-04-09 20:16 zhenhai 阅读(301) 评论(0) 推荐(0)
摘要: 链接:http://poj.org/problem?id=2453这道题是找出一个数以二进制表示时第一个比他大的且二进制1的个数和他本身相等的数,朴素的算法就不讲了,主要说一下位运算的算法。这种找1的个数相同的算法,在状态dp里会使找状态的过程变得很简单View Code 1 #include<stdio.h> 2 int main() 3 { 4 int n; 5 int x; 6 while(scanf("%d",&n)!=EOF) 7 { 8 if(!n) 9 {10 printf("\n");11... 阅读全文
posted @ 2012-04-09 19:58 zhenhai 阅读(140) 评论(0) 推荐(0)
摘要: 链接:http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1341这道题和1228那个很类似,也是用的异或方法找出出现一次的那个,只不过是针对字符串的,字符本身就是ascii码,可以进行这样的运算View Code 1 #include<stdio.h> 2 #include<string.h> 3 int max(int a,int b) 4 { 5 return a>b?a:b; 6 } 7 int main() 8 { 9 char a[35];10 阅读全文
posted @ 2012-04-09 19:49 zhenhai 阅读(219) 评论(0) 推荐(0)
摘要: 链接:http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1128看很多人的博客都没有位运算这一个专题分类,可能觉得没必要单独分类吧,但是我还是觉得有这个必要对几种位运算做一次深入探讨这道题是说,有一组数,共有偶数个数,这些数当中有一部分数出现了偶数次,有两个数出现了奇数次,要找出这两个数这道题涉及到的位运算是异或即^,对于^运算,满足交换律,而且满足a^a=0,且0^a=a,a^b=c则a^c=b这是这道题用到的主要性质,而且我么知道,如果两个二进制数不相等,那么起码有一位一个为0, 阅读全文
posted @ 2012-04-09 19:45 zhenhai 阅读(308) 评论(0) 推荐(0)
摘要: 链接:http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1328这道题是说,前n个正整数即1,2,3......n所有数的最小公倍数定义为An,例如A1=1,A2=2,A3=6......这道题是说,如果给定一个数n是否满足An=A(n-1);我们首先进行一下分析,首先,如果n是素数,那么很明显An!=An-1,剩余的问题就是,如果n是合数的时候,该如何判断,首先呢,我么可以看到,我么可以得出结论,如果An!=An-1那么,n一定不存在互素的因子对。我们可以进行以下证明,我们知道LC 阅读全文
posted @ 2012-04-09 19:31 zhenhai 阅读(222) 评论(0) 推荐(0)
摘要: 链接:http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1338很明显,这是一道动态规划的题,但是建议这道题最好用记忆化搜索去做,这样可以避免访问很多不可达的状态,也避免了很多判断,更可以增加时间效率View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #define N 105 5 using namespace std; 6 typedef long lo 阅读全文
posted @ 2012-04-09 19:15 zhenhai 阅读(296) 评论(0) 推荐(0)
摘要: poj 3273-Monthly Expense链接:http://poj.org/problem?id=3273这样的在最优情况下找最短时间的题一般都可以二分,当然还可以dp,但是因为本题的数据较大,dp会很耗时,也会很费空间,所以用二分的方法,从max(a[i])到sum(a[i])进行逼近。View Code 1 #include<stdio.h> 2 #include<string.h> 3 #define MAX 305 4 int v[MAX]; 5 int main() 6 { 7 int n,m; 8 int sum,max; 9 int i;10 .. 阅读全文
posted @ 2012-04-06 22:00 zhenhai 阅读(152) 评论(0) 推荐(0)
摘要: hdoj 4004-The Frog's Games链接http://acm.hdu.edu.cn/showproblem.php?pid=4004这道题是11年大连赛区网络赛的一道题,当时刚刚学ACM没做出来,现在在看看,百感交集啊,只能说自己当时太水了。解释在代码的注释中View Code 1 #include<stdio.h> 2 #include<string.h> 3 #include<stdlib.h> 4 int stone[500005]; 5 int s,l; 6 int cmp(const void *a,const void * 阅读全文
posted @ 2012-04-05 21:34 zhenhai 阅读(225) 评论(0) 推荐(0)
上一页 1 ··· 8 9 10 11 12 13 下一页