求大佬救助QAQ 30分

P3367 【模板】并查集

枫月雨凌 @ 2019-06-27 17:22:19

选择性自爆,测试老久没个鬼用 30分QAQ

#include<bits/stdc++.h>
using namespace std;
int t[1000001],h[1000001];
int re(int t)
{
    int rs;
    int i = 2;
    while(t>2) {
        if(t%i==0) {
            rs=i;
            t/= i;
        } else i++;
    }
   return rs;
}
bool sp(int n){
    for(int i=2; i<=sqrt(n); i++){
        if(n%i == 0){
            return 1;
        }
    }
    return 0;
}
int sb(int a,int b){
   int c;
   c=a%b;
while(c!=0){
    a=b;b=c;c=a%b;
}
if(sp(b)==1)
return re(b);
return b;
}

int find(int a){
    if(t[a]==a)
    return a;
    return t[a]=find(t[a]);
}
int main(){
int b,c,d,e,f,g,sum;
sum=0;
cin>>b>>c>>d;
f=b;
g=c;
for(int a=b;a<=c;a++){
    if(sp(a)==0){
        t[a]=-1;
        sum++;continue;
    }
    t[a]=a;
}
for(int r=b;r<=c;r++)
for(int a=r+1;a<=c;a++){
    if(t[a]==-1||t[r]==-1)
    continue;
    if(sb(r,a)>=d)
    t[find(a)]=find(r);
}
for(int i=f;i<=g;i++){
h[t[i]]=1;a

}
for(int a=f;a<=g;a++){
if(h[a]==1)
sum++;
}

cout<<sum;
}

by Priori_Incantatem @ 2019-06-27 17:54:48

@枫月雨凌 然而为什么要这么麻烦呢

并查集不是二十多行就搞定了吗


by 枫月雨凌 @ 2019-06-29 08:15:49

@_Wolverine 发错地方了QAQ


by 枫月雨凌 @ 2019-06-29 08:19:33

@_Wolverine 是这个题目

P1621 集合

求大佬救命


|