题解 CF1401C
题目大意:
给定一序列 \(A\),定义当且仅当 \(\gcd(a_i,a_j)=a_{min}\) 时,元素 \(a_i\) 和 \(a_j\) 可以交换。
问当前给定的序列 \(A\) 能否转化为非严格单调递增的序列。
题目分析:
因为两个元素当且仅当其最大公因数为 \(a_{min}\) 时才可以交换,故我们可以先对原序列进行排序,然后判断排序后的序列中原序列与之间的不同的元素能不能被 \(a_{min}\) 整除即可,理由如下:
首先,很显然的是,原命题等价于两个命题,分别是:
- 若排序后的序列中与原序列之间不同的元素不能被 \(a_{min}\) 整除,则原序列必定无法转化为一个非严格单调递增的序列
- 若排序后的序列中与原序列之间的每一个不同的元素能被 \(a_{min}\) 整除,则原序列必定可以转化为一个非严格单调递增的序列。
现在,我们对命题 \(1\) 进行证明:
因为其为排序后的序列,故其与原序列不同的元素必然是那些发生了交换的元素。
如果那些发生了交换的元素不能被最小值 \(a_{min}\) 整除,则证明该元素中不完全包含 \(a_{min}\) 所含有的因子,故其与其他数的最大公因数必然不是\(a_{min}\),其显然无法完成交换操作,与前面相矛盾,所以无法完成转化操作。
现在,我们对命题 \(2\) 进行证明:
若每两个不同的元素之间的最大公因数为 \(a_{min}\),则其能转化为目标序列是显然的,这里不多赘述。
若有两个不同的元素之间的最大公因数不为 \(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的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
- JSOI2016R3 瞎BB题解
题意请看absi大爷的blog http://absi2011.is-programmer.com/posts/200920.html http://absi2011.is-programmer.co ...
随机推荐
- echarts-for-react:实时更新数据
解决方案 echarts 注解 详细链接 https://echarts.apache.org/zh/api.html#echartsInstance.setOption 参考链接 https://b ...
- Unity的IPostprocessBuildWithReport:深入解析与实用案例
Unity IPostprocessBuildWithReport Unity IPostprocessBuildWithReport是Unity引擎中的一个非常有用的功能,它可以让开发者在构建项目后 ...
- 浏览器工作原理及V8引擎
浏览器解析过程 当浏览器加载html资源时,会进行如下的解析过程 遇见 HTML 标记,构建 DOM 树 遇见 style/link 标记调用相应解析器处理CSS标记,并构建出CSS样式树 遇见 sc ...
- 后缀数组C++详解
后缀定义 "后缀i"代表以第i个字符开头的后缀,存储是用i代表字符串s的后缀s[i...n] 后缀数组是什么? 后缀数组(Suffix Array)主要关系到两个数组:sa 和 r ...
- 《Linux基础》08. 日志管理 · 备份与恢复
@ 目录 1:日志管理 1.1:系统常用日志 1.2:日志管理 1.2.1:日志服务 1.2.2:配置文件 1.2.3:自定义日志管理 1.3:日志轮替 1.3.1:轮替服务 1.3.2:配置文件 1 ...
- 聊一聊使用Spring事物时不生效的场景
前言 今天介绍一下Spring事物不生效的场景,事物是我们在项目中经常使用的,如果是Java的话,基本上都使用Spring的事物,不过Spring的事物如果使用不当,那么就会导致事物失效或者不回滚,最 ...
- Web端上传数据到OSS
阿里云文档:参考文献 更正第三点:用户带着从服务器获取的数据签名和文件上传到OSS,这样做可以保证安全性.减轻服务器负担. 1.操作步骤 ①新建Bucket ②创建后更改跨域设置 这一步是保证跨域请胯 ...
- Solution -「GXOI / GZOI 2019」宝牌一大堆
Description Link. Summarizing the fucking statement is the last thing in the world I ever want to do ...
- Tomcat--文件上传--文件包含--(CVE-2017-12615)&&(CVE-2020-1938)
Tomcat--文件上传--文件包含--(CVE-2017-12615)&&(CVE-2020-1938) 复现环境 采用Vulfocus靶场环境进行复现,搭建操作和文章参考具体搭建教 ...
- MySQL系列之——SQL介绍、常用SQL分类、数据类型、表属性、字符集、DDL应用、DCL应用、DML应用(增删改)、DQL应用(select )、元数据信息、show命令
文章目录 一 SQL介绍 二 常用SQL分类 2.1 客户端命令 三 数据类型.表属性.字符集 3.1 数据类型 3.1.1 作用 3.1.2 种类 3.2 表属性 3.2.1 列属性 3.2.2 表 ...