Codeforces1401 C. Mere Array

2024-04-16 00:09
文章标签 array codeforces1401 mere

本文主要是介绍Codeforces1401 C. Mere Array,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

You are given an array 𝑎1,𝑎2,…,𝑎𝑛 where all 𝑎𝑖 are integers and greater than 0.

In one operation, you can choose two different indices 𝑖 and 𝑗 (1≤𝑖,𝑗≤𝑛). If 𝑔𝑐𝑑(𝑎𝑖,𝑎𝑗) is equal to the minimum element of the whole array 𝑎, you can swap 𝑎𝑖 and 𝑎𝑗. 𝑔𝑐𝑑(𝑥,𝑦) denotes the greatest common divisor (GCD) of integers 𝑥 and 𝑦.

Now you’d like to make 𝑎 non-decreasing using the operation any number of times (possibly zero). Determine if you can do this.

An array 𝑎 is non-decreasing if and only if 𝑎1≤𝑎2≤…≤𝑎𝑛.

Input
The first line contains one integer 𝑡 (1≤𝑡≤104) — the number of test cases.

The first line of each test case contains one integer 𝑛 (1≤𝑛≤105) — the length of array 𝑎.

The second line of each test case contains 𝑛 positive integers 𝑎1,𝑎2,…𝑎𝑛 (1≤𝑎𝑖≤109) — the array itself.

It is guaranteed that the sum of 𝑛 over all test cases doesn’t exceed 105.

Output
For each test case, output “YES” if it is possible to make the array 𝑎 non-decreasing using the described operation, or “NO” if it is impossible to do so.

Example
inputCopy
4
1
8
6
4 3 6 6 2 9
4
4 5 6 7
5
7 5 2 2 4
outputCopy
YES
YES
YES
NO
Note
In the first and third sample, the array is already non-decreasing.

In the second sample, we can swap 𝑎1 and 𝑎3 first, and swap 𝑎1 and 𝑎5 second to make the array non-decreasing.

In the forth sample, we cannot the array non-decreasing using the operation.

题意:
可以选定两个gcd为最小数的数交换。求能否使得a数组不降。

思路:
假设最小数为mi,那么求出所有因数存在mi的数,这些数就可以任意换位置(用mi来操作)。
所以将因数存在mi的数排序,再看序列是否不减就好了。

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>using namespace std;typedef long long ll;const int maxn = 1e5 + 7;int a[maxn];int main() {int T;scanf("%d",&T);while(T--) {int n;scanf("%d",&n);int mi = 1e9;for(int i = 1;i <= n;i++) {scanf("%d",&a[i]);mi = min(mi,a[i]);}vector<int>vec;for(int i = 1;i <= n;i++) {if(a[i] % mi == 0) {vec.push_back(a[i]);}}sort(vec.begin(),vec.end());int cnt = 0;for(int i = 1;i <= n;i++) {if(a[i] % mi == 0) {a[i] = vec[cnt++];}}int flag = 1;for(int i = 2;i <= n;i++) {if(a[i] < a[i - 1]) {flag = 0;}}if(!flag) {printf("NO\n");} else {printf("YES\n");}}return 0;
}

这篇关于Codeforces1401 C. Mere Array的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/907302

相关文章

【uva】11536-Smallest Sub-Array(区间移动问题)

一个区间移动的问题,1A了,感觉没什么好说的。。 13975926 11536 Smallest Sub-Array Accepted C++ 0.809 2014-08-01 11:00:20 #include<cstdio>#include<cstring>#include<iostream>using namespace std;#define INF 1 << 30

leetCode#448. Find All Numbers Disappeared in an Array

Description Given an array of integers where 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once. Find all the elements of [1, n] inclusive that do not appear in this

做一个问卷考试,标准答案对比用户填写的答案,array_diff 进行差集比对

if( empty(array_diff($answer_mark, $answer)) && empty(array_diff( $answer,$answer_mark))){//用户答题正确}else{// 答题错误} 做一个问卷考试,标准答案对比用户填写的答案,array_diff  进行差集比对   如用户填写的答案变量为answer   标准答案为answer_mark

[LeetCode] 238. Product of Array Except Self

题:https://leetcode.com/problems/product-of-array-except-self/description/ 题目 Given an array nums of n integers where n > 1, return an array output such that output[i] is equal to the product of all

[LeetCode] 215. Kth Largest Element in an Array

题:https://leetcode.com/problems/kth-largest-element-in-an-array/description/ 题目 Find the kth largest element in an unsorted array. Note that it is the kth largest element in the sorted order, not th

MyBatis - 使用foreach迭代List/Array的说明

在 MyBatis 中的 foreach 元素,主要用于迭代 集合数据 以动态生成执行语句;主要有 item、index、collection、open、separator、close 等属性 属性说明         collection:要迭代的数据集对象,必填项         item:迭代出的元素的别名,必填项         index:元素的序号(map时为k

LeetCode - 33. Search in Rotated Sorted Array

33. Search in Rotated Sorted Array  Problem's Link  ---------------------------------------------------------------------------- Mean:  给你一个数组,这个数组是由两个有序的数组拼接成的(无重复元素),在这个数组中查找元素k的下标. anal

[置顶]后缀数组(suffix array)详解

写在前面 在字符串处理当中,后缀树和后缀数组都是非常有力的工具。 其中后缀树大家了解得比较多,关于后缀数组则很少见于国内的资料。 其实后缀数组是后缀树的一个非常精巧的替代品,它比后缀树容易编程实现, 能够实现后缀树的很多功能而时间复杂度也不太逊色,并且,它比后缀树所占用的空间小很多。 可以说,在信息学竞赛中后缀数组比后缀树要更为实用! 因此在本文中笔者想介绍一下后缀数组的基本概念、构造

【CodeForces】266E More Queries to Array... 线段树

E. More Queries to Array... time limit per test 5 seconds memory limit per test 256 megabytes input standard input output standard output You've got an array, consisting of n

c/c++: warning: ISO C90 forbids variable length array ‘a’

文章目录 介绍C99安全问题类似的alloca安全问题的防护 介绍 https://en.cppreference.com/w/c/language/array @item -Wvla @opindex Wvla @opindex Wno-vla Warn if a variable-length array is used in the code. @option{-Wno-v