序列排序

題目鏈接:序列排序


顯然不互質的數的相對位置不會改變。

然後直接nlogn預處理因子爲x的數字有哪些。

按照位置sort即可。


AC代碼:

#pragma GCC optimize("-Ofast","-funroll-all-loops")
#include<bits/stdc++.h>
//#define int long long
using namespace std;
const int N=1e5+10;
int n,a[N],pos[N],ok;
vector<int> v[N];
signed main(){
	cin>>n;	ok=1;
	for(int i=1;i<=n;i++)	cin>>a[i],pos[a[i]]=i;
	for(int i=2;i<=n;i++)	for(int j=i;j<=n;j+=i)	v[i].push_back(j);
	for(int i=2;i<=n;i++){
		sort(v[i].begin(),v[i].end(),[](int a,int b){
			return pos[a]<pos[b];
		});
		for(int j=1;j<v[i].size();j++)	if(v[i][j]<v[i][j-1])	ok=0;
	}
	puts(ok?"Yes":"No");
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章