首页 > 学院 > 开发设计 > 正文

[CODEVS1553]互斥的数(stl)

2019-11-08 01:58: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);}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表