- 博客(20)
- 收藏
- 关注
原创 hdu1083
题意:有p门的课,每门课都有若干学生,现在要为每个课程分配一名课代表,每个学生只能担任一门课的课代表,如果每个课都能找到课代表,则输出"YES",否则"NO"。 分析:采用二分图的最大匹配,对课程—学生关系建立一个图,进行二分图的最大匹配,如果最大匹配数==课程数,说明能够满足要求,否则不能。每个课程轮流选择课代表,从头遍历n学生,如果该学生还未担任任何课程的课代表或者一个学生担任的课代表的
2014-12-08 10:11:31
473
原创 hdu1085
题意:给n1个1,n2个2,n3个5,问它们不能组成的最小正整数是谁。 母函数:http://www.cnblogs.com/FCWORLD/archive/2010/10/10/1847218.html #include #include int main() { int i,j,k,a,b,c,d[10001]; while(scanf("%d %d %d",&
2014-12-08 09:22:39
348
原创 hdu1086
背景知识: 判断两线段是否相交: 我们分两步确定两条线段是否相交: (1)快速排斥试验 设以线段 P1P2 为对角线的矩形为R, 设以线段 Q1Q2 为对角线的矩形为T,如果R和T不相交,显然两线段不会相交。 (2)跨立试验 如果两线段相交,则两线段必然相互跨立对方。若P1P2跨立Q1Q2 ,则矢量 ( P1 - Q1 ) 和( P2 -
2014-12-08 08:52:39
407
原创 hdu1087
题意: 从起点到终点,求走过的点的和最大。 分析: 最大上升子序列。状态转移方程:dp[i]=max{dp[j]+val[i],dp[i]}。 #include int main(){ int i,j,n,dp[1001],max,val[1001]; while(scanf("%d",&n)&&n!=0){ for(i=1;i<=n;++i){
2014-12-01 13:40:43
295
原创 hdu1099
题意: 一套彩票有n张,编号由1到n,凑齐这n张能得奖,问平均每买几张彩票会得到完整的一套彩票。 分析: 拿到第一张卡片的概率是 n/n ,期望次数是 1,拿到第二张的概率是 (n-1)/n, 期望次数是 n/(n-1) ...把这些次数加起来 n/n + n/(n-1) + ... + n/1。 #include #include __int64 gcd(__int64 a,__in
2014-12-01 13:00:06
365
原创 hdu1098
题意: 求满足65|f(x)(即f(x)能被65整除)的最小a的值。 分析: 数学归纳法,f(x)能被65整除,则f(x+1)也能被整除,将f(x+1)展开,最后只要确保18+k*a能被整除。当k为65或者a大于64时都没有找到,则不存在。 #include int main(){ int i,k; while(~scanf("%d",&k)){ if(k%
2014-12-01 09:07:50
317
原创 POJ2239匈牙利算法BFS实现
题目大意: 在大学里有许许多多的课程,现在小明需要去选择课程,他是一个爱学习的人,所以想尽可能多的选择课程, 在学校里有n个课程,并且在学校规定,每周里的每天有12节课,那么一周就有7*12节课。
2014-11-23 19:16:53
758
原创 POJ1274匈牙利算法DFS实现
题意: 有n头牛与m个牛棚,给出每头牛愿意去产奶的牛棚编号,每头牛只可产一次奶,每个牛棚也只允许一只牛产奶。 解法: 比较简单的二分图最大匹配
2014-11-23 18:01:44
520
原创 HDU1232
#include #define MAX 1005 int father[MAX],rank[MAX]; int findfather(int a){ if(father[a]==a) return a; return father[a]=findfather(father[a]); } void Union(int a,int b){ int fa=fin
2014-11-16 15:41:45
295
原创 HDU1272
并查集的优化[编辑] 路径压缩[编辑] 刚才我们说过,寻找祖先时采用递归,但是一旦元素一多起来,或退化成一条链,每次GetFather都将会使用O(n)的复杂度,这显然不是我们想要的。 对此,我们必须要进行路径压缩,即我们找到最久远的祖先时“顺便”把它的子孙直接连接到它上面。这就是路径压缩了。
2014-11-16 15:13:09
384
原创 POJ3169差分约束(SPFA)
题意: n头牛编号为1到n,按照编号的顺序排成一列,每两头牛的之间的距离 >= 0。这些牛的距离存在着一些约束关系:1.有ml组(u, v, w)的约束关系,表示牛[u]和牛[v]之间的距离必须 = w。问如果这n头无法排成队伍,则输出-1,如果牛[1]和牛[n]的距离可以无限远,则输出-2,否则则输出牛[1]和牛[n]之间的最大距离。
2014-11-09 13:16:57
658
原创 POJ3159差分约束(SPFA)
题意: 有一批糖果要由班长flymouse分发给班里的小朋友,给出m对数据u,v,w,表示第u个小朋友不能比第v个小朋友少w个,但flymouse与snoopy不和,所以在满足上述约束的条件下,flymouse要尽量比snoopy多。snoopy标号1,flymouse标号n
2014-11-09 12:34:03
343
原创 HDU1241广搜
题目大意:矩形格子内有油田,相邻的两个格子如果油口,那么它们是同一个油田,求一共有多少的油田。分析:深搜,广搜都可以,广搜注意标记以避免重复访问。(PS:杭电上给的第四个测试数据有问题,第二个5后面多了个空格)#include #include #define MAX 105 char ma[MAX][MAX],mark[MAX][MAX],ans,row,col; int d[8][2]={0,
2014-10-27 20:07:07
383
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅