ABC393E题解
大概评级:绿。
拿到题目,寻找突破口,发现 \(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题解的更多相关文章
- 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 ...
随机推荐
- 2024年1月Java项目开发指南1:环境与工具准备
准备工作 基础能力 开发能力的事咱先不谈,有两个基础技能要学一下. 1.学习使用Markdown编写文档 2.学会使用git拉取代码和提交代码 软件准备 电脑需要安装以下软件: IDEA 2023.2 ...
- Python中指数概率分布函数的绘图详解
在数据科学和统计学中,指数分布是一种应用广泛的连续概率分布,通常用于建模独立随机事件发生的时间间隔.通过Python,我们可以方便地计算和绘制指数分布的概率密度函数(PDF).本文将详细介绍指数分布的 ...
- https://gitlab.com/volian/nala/-/wikis/Installation
Installation Debian Testing/Sid Nala is officially in the testing and sid repos. sudo apt install ...
- WPS在ArchLinux常见问题
问题简述wps在aur源上有包,直接下载安装即可,但是通过包管理器安装的wps会出现一些奇怪的问题,我遇到的有两个: wps在打开时提示缺少字体wps word不能导出pdf文档,同时wps pdf也 ...
- Qt开发经验小技巧221-225
在对表格数据模型操作的时候,经常遇到一种场景就是,删除某条记录后,希望重新选中某一行.QTableView.QTableWidget本身就支持多选全选等操作,比如批量删除可以多选. //拿到表格数据模 ...
- Qt数据库应用12-通用数据库清理
一.前言 很多项目如果需要存储很多日志记录比如运行日志,时间长了记录数量非常多,数据库体积不断增大,对应数据库表的增删改查的效率不断降低,为了消除这几个影响,需要有一套机制,不断将早期的数据清理,清理 ...
- 主打一个“小巧灵动”:Vite + Svelte
作者:来自 vivo 互联网大前端团队- Wei Xing 在研发小型项目时,传统的 Vue.React 显得太"笨重".本文主要针对开发小型项目的场景,谈谈 Vite+Svel ...
- 「规则类怪谈」塔 - (preview)
前段时间,大概五六月份,我很喜欢规则类怪谈.颓废的时候读了一大堆质量参差不齐的作品,试着编了一个世界观然后开写.咕着咕着磨到现在,至少情节大概成形了.最大的阻力在于物理规则的完备性和自洽性,为什么 ...
- 国家和地区代码列表,ISO 3166-1:2006
本文根据ISO 3166-1:2006(International Standard Norme Internationale) 英文版(含2007年补充说明)整理.与ISO 3166-1:1997相 ...
- Redis组件的特性,实现一个分布式限流
分布式---基于Redis进行接口IP限流 场景 为了防止我们的接口被人恶意访问,比如有人通过JMeter工具频繁访问我们的接口,导致接口响应变慢甚至崩溃,所以我们需要对一些特定的接口进行IP限流,即 ...