AtCoder 288_C
并查集本次题目:简单题但卡壳了
题目简叙:将这个无向图建立起来,对其进行操作:删除最小边数,使其不再有环,求最小操作次数
想法:使用并查集,把相连的集合合并,然后再进行遍历,判断有几个find(i)==i,就是对应的环数,就这样吗?不对,假如这个集合有多个环呢?所以,我们一开始就要算对于集合中多余的环数,怎么算?假如一个集合只有一个环,那他的点数应该等于边数所以我们先要除去多余的边数,然后再进行find(i)==i判断累加即可
代码如下
123456789101112131415161718192021222324252627282930313233343536#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>using namespace std;const int N=200010;int f[N];int n, m, ans, cnt;int find(int x){ if(f[x]!=x) f[x]=find(f[x]); retu ...
筛质数
线性筛质数例子:30和45的最大公因数是15设30为a, 15为b, 2为c那c肯定会小于b, 因为b是最大公因数, 如果大于b, 那他(c)就是最大公因数, 所以不可能c是质数, 因为假如c是质数, 那肯定可以分离个质数给b, 这样b就不是最大公因数了所以, 是不是我们把(小于b的质数全部去乘以1~n)的数全部给标记了, 就可以了?不是, 假如c大于b的最小质因数, 那30的最大公因数就不是b了因为b是由若干个质数组成, 如果c大于b的最小质因数, 那b可以是会把自己最小的质因数和c换所以, 当我们在遍历质数数组时, 它最多就是等于b的最小质因数
还有一个, 我们把从2开始的看作因数, 找他的质数, 第一层循环, 相当于从前往后去遍历一下所有的因数第二层循环, 相当于把第一层循环中的i的后面的合数进行了标记, 并且根据质数不大于b的最小公因数, 去找后面的合数如果质数与b的最小公因数相等, 那直接break
代码如下
1234567891011121314151617181920212223242526272829#include<cstdio>#include<c ...
骚家军yyds
这是我的第二篇文章hhh
深夜加班emo
这是我的第一篇文章hhh
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick StartCreate a new post1$ hexo new "My New Post"
More info: Writing
Run server1$ hexo server
More info: Server
Generate static files1$ hexo generate
More info: Generating
Deploy to remote sites1$ hexo deploy
More info: Deployment





