当前位置:网站首页>C. Mere Array
C. Mere Array
2022-08-09 21:55:00 【秦小咩】
C. Mere Array
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
You are given an array a1,a2,…,ana1,a2,…,an where all aiai are integers and greater than 00.
In one operation, you can choose two different indices ii and jj (1≤i,j≤n1≤i,j≤n). If gcd(ai,aj)gcd(ai,aj) is equal to the minimum element of the whole array aa, you can swap aiai and ajaj. gcd(x,y)gcd(x,y) denotes the greatest common divisor (GCD) of integers xx and yy.
Now you'd like to make aa non-decreasing using the operation any number of times (possibly zero). Determine if you can do this.
An array aa is non-decreasing if and only if a1≤a2≤…≤ana1≤a2≤…≤an.
Input
The first line contains one integer tt (1≤t≤1041≤t≤104) — the number of test cases.
The first line of each test case contains one integer nn (1≤n≤1051≤n≤105) — the length of array aa.
The second line of each test case contains nn positive integers a1,a2,…ana1,a2,…an (1≤ai≤1091≤ai≤109) — the array itself.
It is guaranteed that the sum of nn over all test cases doesn't exceed 105105.
Output
For each test case, output "YES" if it is possible to make the array aa non-decreasing using the described operation, or "NO" if it is impossible to do so.
Example
input
Copy
4 1 8 6 4 3 6 6 2 9 4 4 5 6 7 5 7 5 2 2 4
output
Copy
YES YES YES NO
Note
In the first and third sample, the array is already non-decreasing.
In the second sample, we can swap a1a1 and a3a3 first, and swap a1a1 and a5a5 second to make the array non-decreasing.
In the forth sample, we cannot the array non-decreasing using the operation.
=========================================================================
非常巧妙的一个题目,首先来说,一个无规则数列进行排序,只需要将排序之后与原位置不对应的位置进行对比即可,也就是排序之后与排序之后位置上数字不对应的需要进行排序。
而我们根据冒泡排序等各种排序规则,两元素若能够自由交换,那么一定能够排序成功,而本题要求的条件略有苛刻,那就是要直接交换两个元素的话,必须满足gcd=mina,这个条件太苛刻了,我们冒泡排序无法成功。但是我们可以将这个条件再降一下标准
a b能够整除min,那么一定能够交换
证明如下
x min y 其中gcd(x,y)=k min 也就是x,y目前无法进行交换
min x y
y x min
y min x
三步走,完成交换,min位置不变
#include<iostream>
#include<cstdio>
#include<queue>
# include<algorithm>
using namespace std;
int b[100000+10];
int a[100000+10];
int main()
{
int t;
cin>>t;
while(t--)
{
int n,flag=0;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
b[i]=a[i];
}
sort(b+1,b+1+n);
for(int i=1;i<=n;i++)
{
if(a[i]!=b[i])
{
if(b[i]%b[1])
{
flag=1;
break;
}
}
}
if(flag)
{
cout<<"No"<<endl;
}
else
{
cout<<"YES"<<endl;
}
}
return 0;
}边栏推荐
- Arcgis工具箱无法使用,显示“XML包含错误“的解决方法
- nvm下node安装;node环境变量配置
- [Microservice~Nacos] Nacos service provider and service consumer
- TF uses constant to generate data
- TF generates uniformly distributed tensor
- 你的 Link Button 能让用户选择新页面打开吗?
- APP automation test framework - UiAutomator2 introductory
- Interpretation of the paper (DropEdge) "DropEdge: Towards Deep Graph Convolutional Networks on Node Classification"
- Bean life cycle
- Xiaohei leetcode's refreshing rainy day trip, just finished eating Yufei Beef Noodles, Mala Tang and Beer: 112. Path Sum
猜你喜欢
随机推荐
TF generates uniformly distributed tensor
CVPR22 Oral | shunt through multi-scale token polymerization from attention, code is open source
【EF】数据表全部字段更新与部分字段更新
mysql 找不到或无法加载已注册的 .Net Framework Data Provider。
Sudoku | Backtrack-7
Interviewer: How to deal with Redis big key?
五星控股汪建国:以“植物精神”深耕赛道,用“动物精神”推动成长
Interpretation of the paper (DropEdge) "DropEdge: Towards Deep Graph Convolutional Networks on Node Classification"
JS–比想象中简单
2.1.5 大纲显示问题
重装系统后新建文本文档打不开怎么办
一文让你快速了解隐式类型转换【整型提升】!
Use convert_to_tensor in Tensorflow to specify the type of data
Flask入门学习教程
Flask之路由(app.route)详解
One Pass 2074: [21CSPJ Popularization Group] Candy
leetcode 39. 组合总和(完全背包问题)
18-GuliMall 压力测试与性能监控
L3-2 Delete up to three characters (30 points)
Easyui 表单验证「建议收藏」








