大概评级:绿。

拿到题目,寻找突破口,发现 \(A_i \le 10^6\),一般的数据都是 \(A_i \le 10^9\),所以必有蹊跷。

数学,权值,最大公约数,联想到了因子……懂了,原来是这么做!

首先一个数 \(x\) 如果能做最大公约数,那么 \(A_i\) 一定是 \(x\) 的倍数,并且总共有至少 \(K\) 个数是 \(x\) 的倍数(包含 \(A_i\)),那么我们肯定是需要一个数组来处理对于一个数在 \(A\) 中有多少个数是它的倍数,但根据我们的直觉,在这个数组之前应该还需要设置一个数组处理对于一个数它在 \(A\) 中出现了多少次,我们设处理对于一个数它在 \(A\) 中出现了多少次的数组为 \(num\),处理对于一个数在 \(A\) 中有多少个数是它的倍数的数组为 \(s\),那么显然 \(f_d = \sum_{d|n} s_n\),于是直接使用类似埃氏筛法的东西求出 \(f\) 数组,如果设 \(M = \max_{i = 1}^n A_i\),那么求出 \(f\) 数组的时间复杂度为 \(O(M \log M)\),求出 \(s\) 数组就不用说了,\(O(N)\) 地一边读入一边统计就行了,最后有了 \(f\) 数组的辅助,是很好求出答案的,我们设 \(A_i\) 的答案为 \(ans_i\),\(ans_i = \max_{d|n,t_d \ge K}d\),很好理解吧,于是我们发现这玩意也可以使用一种类似埃氏筛的方法求,于是这道题就结束了。

总时间复杂度:\(O(N+M \log M+M \log M+N) = O(N+M \log M)\)。

代码:

#include<bits/stdc++.h>
using namespace std;
const int N = 1.2e6+5;
int num[N],t[N],ans[N],a[N];
int main()
{
int n,k;
scanf("%d %d",&n,&k);
int maxx = 0;
for(int i = 1;i<=n;i++)
{
scanf("%d",&a[i]);
maxx = max(maxx,a[i]);
num[a[i]]++;
}
for(int i = 1;i<=maxx;i++)
{
for(int j = i;j<=maxx;j+=i)
{
t[i]+=num[j];
}
}
for(int i = 1;i<=maxx;i++)
{
if(t[i]<k)
{
continue;
}
for(int j = i;j<=maxx;j+=i)
{
ans[j] = max(ans[j],i);
}
}
for(int i = 1;i<=n;i++)
{
printf("%d\n",ans[a[i]]);
}
return 0;
}

ABC393E题解的更多相关文章

  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. Flutter 引用包命名冲突,重复引用

    Flutter 引用包命名冲突,重复引用 报错信息 lib/page.dart:92:11: Error: 'Response' is imported from both 'package:get/ ...

  2. Dapr-3: 从 20000 英尺之上俯瞰 Dapr

    第 3 章 从 20000 英尺之上俯瞰 Dapr Dapr at 20,000 feet | Microsoft Docs 在第 1 章中,我们讨论了分布式微服务应用的吸引力.但是,我们也指出了它会 ...

  3. Slate文档编辑器-TS类型扩展与节点类型检查

    Slate文档编辑器-TS类型扩展与节点类型检查 在之前我们基于slate实现的文档编辑器探讨了WrapNode数据结构与操作变换,主要是对于嵌套类型的数据结构类型需要关注的Normalize与Tra ...

  4. Qt开发经验小技巧101-110

    如果需要在尺寸改变的时候不重绘窗体,则设置属性即可 this->setAttribute(Qt::WA_StaticContents, true); 这样可以避免可以避免对已经显示区域的重新绘制 ...

  5. 即时通讯技术文集(第18期):IM架构设计基础知识合集 [共16篇]

    为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第18 期. [- 1 -] IM系统的MQ消息中间件选型:Kafka还是RabbitMQ? [ ...

  6. itextpdf 找出PDF中 文字的坐标

    目录 添加引用 添加工具类 调用 找到位置,签名的话见:https://www.cnblogs.com/vipsoft/p/18644127 新项目可以尝试一下 iText 7 , 我这边是老项目所以 ...

  7. cmake:引入第三方库

    需求:开源库中一般都需要引入第三方库,下面以引入boost库为例 (1)安装所需的三方库 boost安装:参考 (2)引入 这里的cmakelists文件为: # Import Boost (for ...

  8. 使用kNN算法改进约会网站配对效果(尺度归一化问题)

    简单匹配:

  9. Kotlin:【接口】【抽象类】

  10. Jetbrains系列产品无限时间重置插件

    概述Jetbrains家的产品有一个很良心的地方,他会允许你试用30天(这个数字写死在代码里了)以评估是否你真的需要为它而付费. 事实上有一款插件可以实现这个功能,你或许可以用它来重置一下试用时间.但 ...