题目大意:

给定一序列 \(A\),定义当且仅当 \(\gcd(a_i,a_j)=a_{min}\) 时,元素 \(a_i\) 和 \(a_j\) 可以交换。

问当前给定的序列 \(A\) 能否转化为非严格单调递增的序列。

题目分析:

因为两个元素当且仅当其最大公因数为 \(a_{min}\) 时才可以交换,故我们可以先对原序列进行排序,然后判断排序后的序列中原序列与之间的不同的元素能不能被 \(a_{min}\) 整除即可,理由如下:

首先,很显然的是,原命题等价于两个命题,分别是:

  1. 若排序后的序列中与原序列之间不同的元素不能被 \(a_{min}\) 整除,则原序列必定无法转化为一个非严格单调递增的序列
  2. 若排序后的序列中与原序列之间的每一个不同的元素能被 \(a_{min}\) 整除,则原序列必定可以转化为一个非严格单调递增的序列。

现在,我们对命题 \(1\) 进行证明:

因为其为排序后的序列,故其与原序列不同的元素必然是那些发生了交换的元素。

如果那些发生了交换的元素不能被最小值 \(a_{min}\) 整除,则证明该元素中不完全包含 \(a_{min}\) 所含有的因子,故其与其他数的最大公因数必然不是\(a_{min}\),其显然无法完成交换操作,与前面相矛盾,所以无法完成转化操作。

现在,我们对命题 \(2\) 进行证明:

  1. 若每两个不同的元素之间的最大公因数为 \(a_{min}\),则其能转化为目标序列是显然的,这里不多赘述。

  2. 若有两个不同的元素之间的最大公因数不为 \(a_{min}\),那么这两个数要么可以通过其他与之最大公因数为 \(\boldsymbol{a_{min}}\) 的间接交换而来,要么直接和 \(a_{min}\) 间接交换而来。

综上,我们不难证明这个方法是正确的。时间复杂度取决于排序,这里我用的是快排,故时间复杂度为 \(O(n\lg n)\)

代码实现:

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define TIME_LIMIT (time_t)2e3
#define dbg(x) cerr<<#x<<": "<<x<<endl;
#define MAX_SIZE (int)1.1e5 signed main() {
ios::sync_with_stdio(false);
#ifdef LOCAL
freopen("in.in", "r", stdin);
freopen("out.out", "w", stdout);
time_t cs = clock();
#endif
//========================================
int T;
cin >> T; while (T--) {
int n;
cin >> n;
int a[MAX_SIZE] = {};
int bak[MAX_SIZE] = {}; for (int i = 1; i <= n; i++) {
cin >> a[i];
bak[i] = a[i];
} sort(a + 1, a + 1 + n);
bool flag = 0; for (int i = 1; i <= n; i++) {
if (a[i] != bak[i] && a[i] % a[1] != 0) {
cout << "NO" << endl;
flag = 1;
break;
}
} if (!flag)
cout << "YES" << endl;
} //========================================
#ifdef LOCAL
fclose(stdin);
fclose(stdout);
time_t ce = clock();
cerr << "Used Time: " << ce - cs << " ms." << endl; if (TIME_LIMIT < ce - cs)
cerr << "Warning!! Time exceeded limit!!" << endl; #endif
return 0;
}

题解 CF1401C的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

  10. JSOI2016R3 瞎BB题解

    题意请看absi大爷的blog http://absi2011.is-programmer.com/posts/200920.html http://absi2011.is-programmer.co ...

随机推荐

  1. C# 处理 csv 文件中的双引号

    C# CSV 双引号处理 直接上代码,自己写的,有问题可以随时联系 // 没有保证所有的都能对上,目前只处理了自己所遇见的格式 public static string[] SplitStr(stri ...

  2. Node: 使用nvm切换node版本

    软件下载 https://github.com/coreybutler/nvm-windows/releases/tag/1.1.7 解压并安装 双击程序一路安装即可.安装完成后,在控制台输入nvm出 ...

  3. 快速了解DevSecOps:构建安全软件开发的基石!

    关键词 DevSecOps - 在不影响敏捷性的前提下,将安全充分融入到SDLC的所有环节中 SDLC-软件交付生命周期 SCA-软件组成分析-用于识别和检测软件中使用的开源/第三方组件的已知安全漏洞 ...

  4. start_HTTPServer

    alias alias wser='sh /Users/enzhao/suanec/libs/envs/start_HTTPServer.sh' /Users/enzhao/suanec/libs/e ...

  5. c#如何使用WASM跨语言调用?

    介绍Wasm(WebAssembly) WebAssembly(简称Wasm)是一种用于基于堆栈的虚拟机的二进制指令格式.Wasm被设计为编程语言的可移植编译目标,支持在web上部署客户端和服务器应用 ...

  6. Thinkphp 5.x 远程代码执行漏洞利用小记

    Thinkphp 5.x远程代码执行漏洞存在于Thinkphp 5.0版本及5.1版本,通过此漏洞,可以在远程执行任意代码,也可写入webshell 下面是对其进行的漏洞利用! 漏洞利用: 1,利用s ...

  7. Web通用漏洞--sql注入

    SQL注入 mysql注入目的:获取当前web权限 mysql注入--常规查询&union联合查询 MYSQL--Web组成架构 服务器搭建web服务可能存在多个站点搭建在一台服务器中,数据集 ...

  8. MySQL——后码锁(Next-Key Block)

    众所周知,Mysql的事务隔离级别分为4个,分别是READ-UNCOMMITED,READ-COMMITED,REPEATABLE-READ,SERIALIZABLE,在常规数据库概论中,前三种事务隔 ...

  9. 如何通过关键词搜索API接口获取1688的商品详情

    如果你是一位电商运营者或者是想要进行1688平台产品调研的人员,你可能需要借助API接口来获取你所需要的信息.在这篇文章中,我们将会讨论如何通过关键词搜索API接口获取1688的商品详情. 第一步:获 ...

  10. AI测试,给出的答案还挺那么回事儿的~

    今天文心一言全民开放了,所有人都可以正常下载使用了,不用像之前一样排队等号了.之前内测阶段倒也体验过,技术人员总是喜欢尝鲜,第一时间拿到邀请码后就各种调戏了TA一番,那时觉得给出的答案总有些差强人意, ...