hdu 2841 :题意:是从(0,0)点可以看到的最多数目的树。
思路:易知对(x1,y1),(x2,y2),两点,若x1/y1=x2/y2,则只能看到一个,于是我们求最简的(x1,y1),则其他点可以表示为(K*x1,k*y1),由此转化为求x属于[1,m],y属于[1,n],gcd(x,y)=1的对数。可以枚举[1,n]的素因子用容斥原理求出。hdu4135: 题意:是求[A,B]区间中与互质的数的个数。
思路: 分解C,得到素因子,运用容斥原理,即可。
hdu1796:题意: 给定一个集合M,和数n.求小于n的数中能被集合中的若干个数整除的数的个数。
思路:很明显的容斥原理,但是处理时注意,多个数能被n整除,则他们的最小公倍数能被n整除,有重复,可以用容斥原理。
hdu 1695:题意:给定区间[1,b],[1,d],k,求x属于[1,b],y属于[1,d]使得gcd(x,y)=k;
思路:gcd(x,y)=k的意思是,x,y去除k这个因子后,两者是互质的,于是我们就把此问题转换为求[1,x/k],[1,y/k],两个数互质的问题了,要注意的是此题数对是有序的,于是假设得到区间[1,m],[1,n],n>=m,则对于[1,m]我们用欧拉函数求,[m+1,n],我们用容斥原理求。
本文详细解读了HDU平台上的三个算法问题:从(0,0)点可以看到的最多数目的树、求[A,B]区间中与互质的数的个数、给定集合M和数n,求小于n的数中能被集合中的若干个数整除的数的个数。通过容斥原理与gcd函数的巧妙应用,解决树形问题和互质数计数,同时介绍了如何利用欧拉函数和容斥原理处理复杂情况。

1747

被折叠的 条评论
为什么被折叠?



