摘要:
POJ - 2236Wireless Network 并查集。 每次修理计算机,遍历可以与之相连的计算机并进行合并。时间复杂度 \(O(n\log n)\) 。最多只用修理 \(n\) 次。 每次测试连通性,判断根节点是否相同,时间复杂度 \(O(1)\) 。最多不过 \(3e5\) 次测试。 总时 阅读全文
摘要:
并查集 #include <cstdio> #include <vector> using namespace std; /** * Disjoint Set Union */ class DSU { vector<int> s; int cnt; public: DSU(int n) { cnt 阅读全文
摘要:
题目链接: hdu5902 ( GCD is Funny ) 一开始大意了,直接求出两两 \(gcd\) 就交了,毫无悬念地 \(WA\) 了一发。 实际是求所有 \(2\le size <n\) 的子集的 \(gcd\) . /** * hdu5902 GCD is Funny * */ #inc 阅读全文
摘要:
题目链接: hdu5656 ( CA Loves GCD ) \(dp[i][j]\) 代表前 \(i\) 个数的所有组合中 \(gcd\) 为 \(j\) 的个数。 /** * hdu5656 CA Loves GCD * */ #include <iostream> #include <cstd 阅读全文
摘要:
题目链接: hdu5584 ( LCM Walk ) 令起点 \(x_0=pt,y_0=qt\) , \(p,q,t\in N^+\) 且 \(p,q\) 互质, 则 \(gcd(x_0,y_0)=t,lcm(x_0,y_0)=pqt\) . 不妨设 \(x_1=pt,y_1=pt+pqt=qt(1 阅读全文
摘要:
题目链接: hdu5223 ( GCD ) 对一个区间 \([L,R]\) ,\(ans\) 应是该区间的所有数共有的因子,不断求 \(lcm\) 最后检验即可。 /** * hdu5223 GCD * */ #include <cstdio> #include <algorithm> using 阅读全文
摘要:
题目链接: hdu2588 ( GCD ) 给定 \(N,M\) ,求解 \(1\sim N\) 中满足条件 \((X,N)\ge M\) 的 \(X\) 的个数。 设 \(p>=M\) 为 \(N\) 的一个因子。 则 \(1\sim N\) 中满足条件 \((X,N)= p\) 的 \(X\) 阅读全文
摘要:
题目链接: hdu1576 ( A/B ) 求出 \(B\) 关于 \(9973\) 的乘法逆元即可。 由于 \(gcd(B,9973) = 1\) ,故可用费马小定理。 /** * hdu1576 A/B * */ #include <cstdio> #include <climits> type 阅读全文
摘要:
题目链接: hdu1019 ( Least Common Multiple ) 求解最小公倍数: \(lcm(a,b)=a/gcd(a,b)*b\) . /** * hdu1019 Least Common Multiple * */ #include <cstdio> int gcd(int a, 阅读全文
摘要:
题目链接:poj1061 青蛙的约会 青蛙A \(t\) 次跳跃后的坐标为 \((x+mt)\mod L\) 青蛙B \(t\) 次跳跃后的坐标为 \((y+nt)\mod L\) 碰面所需跳跃次数,即求方程 \[ x+mt\equiv y+nt(\text{mod}\ L) \\ \Leftrig 阅读全文