[CODEVS1553]互斥的数(stl)

来源:互联网 发布:ssh框架电商项目源码 编辑:程序博客网 时间:2024/06/16 02:13

题目描述

传送门

题解

排序,然后互斥的数组成了一些不相交的链
用map记录一下找链就行了

代码

#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<map>using namespace std;#define LL long long#define N 100005int n,cnt,now,ans;LL p,a[N];map <LL,int> mp;bool flag[N];int main(){    scanf("%d%lld",&n,&p);    for (int i=1;i<=n;++i) scanf("%lld",&a[i]);    sort(a+1,a+n+1);    for (int i=1;i<=n;++i) mp[a[i]]=i;    for (int i=1;i<=n;++i)        if (!flag[i])        {            cnt=1;now=i;flag[i]=1;            while (mp[a[now]*p])            {                ++cnt;                now=mp[a[now]*p];                flag[now]=1;            }            ans+=(cnt-1)/2+1;        }    printf("%d\n",ans);}
0 0
原创粉丝点击