[AGC003D] Anticube
Problem Statement
Snuke got positive integers $s_1,...,s_N$ from his mother, as a birthday present. There may be duplicate elements.
He will circle some of these $N$ integers. Since he dislikes cubic numbers, he wants to ensure that if both $s_i$ and $s_j (i ≠ j)$ are circled, the product $s_is_j$ is not cubic. For example, when $s_1=1,s_2=1,s_3=2,s_4=4$, it is not possible to circle both $s_1$ and $s_2$ at the same time. It is not possible to circle both $s_3$ and $s_4$ at the same time, either.
Find the maximum number of integers that Snuke can circle.
Constraints
- $1 ≦ N ≦ 10^5$
- $1 ≦ s_i ≦ 10^{10}$
- All input values are integers.
首先 Pollard-Pho 分解质因数(bushi
然后考虑把 \(x\) 每一个因数的指数 \(\bmod 3\) 后出来一个数 \(f(x)\)。那么在这个问题中,若 \(f(x)=f(y)\) ,那么 \(x\) 和 \(y\) 本质是相同的,看做一个等价类。
同时可以发现,把所有指数给取反后,出来一个 \(g(x)\),那么 \(g(x)\) 代表的等价类和 \(f(x)\) 中的数不能同时出现。
这样就很好统计了。
然后你真的想用 Pollar-Pho 吗?
对于 \(x\) 的某一个超过 \(\sqrt[3]{n}\) 质因数,他的指数不会超过 \(3\),所以容易算出 \(f(x)\)
在计算 \(g(x)\) 的时候,把所有在 \(\sqrt[3]{n}\) 之内的因数筛完之后,假设出来是 \(d\),那么如果 \(d=x^2\),\(g(x)\) 乘上 \(\sqrt{d}\),否则如果 \(d\le 1000000\),\(g(x)\) 乘上 \(d^2\),否则 \(g(x)\) 一定超过 \(10^{12}\),不用管。
using namespace std;
typedef long long LL;
const int N=1e5+5;
int n,ans;
LL s;
LL read()
{
LL s=0;
char ch=getchar();
while(ch<'0'||ch>'9')
ch=getchar();
while(ch>='0'&&ch<='9')
s=s*10+ch-48,ch=getchar();
return s;
}
map<LL,LL>to,mp;
int main()
{
n=read();
for(int i=1;i<=n;i++)
{
s=read();
LL v=1,g=1;
for(int j=2;j<=2200;j++)
{
if(s%j==0)
{
int c=0;
while(s%j==0)
s/=j,++c;
c%=3;
if(c==1)
v*=1LL*j*j,g*=j;
else if(c)
v*=j,g*=1LL*j*j;
}
}
g*=s;
mp[g]++;
int k=sqrt(s);
if(1LL*k*k==s)
v*=k,to[g]=v;
else if(s<=1000000)
v*=1LL*s*s,to[g]=v;
}
for(map<LL,LL>::iterator it=mp.begin();it!=mp.end();it++)
{
LL x=(*it).first;
if(x==1)
ans++;
else
ans+=max(mp[x],to.find(x)!=to.end()&&mp.find(to[x])!=mp.end()? mp[to[x]]:0);
mp[x]=mp[to[x]]=0;
}
printf("%d",ans);
}
[AGC003D] Anticube的更多相关文章
- AtCoder刷题记录
构造题都是神仙题 /kk ARC066C Addition and Subtraction Hard 首先要发现两个性质: 加号右边不会有括号:显然,有括号也可以被删去,答案不变. \(op_i\)和 ...
- 【agc003D】Anticube
Portal --> agc003D Description 给你\(n\)个数,要从里面选出最多的数满足这些选出来的数中任意两个数的乘积都不是立方数 Solution (为什么感觉最近这种解法 ...
- Agc003_D AntiCube
传送门 题目大意 给定$N$个数,求一个最大的子集,使得任意两两的乘积不是一个完全立方数. $n\leq 10^5 A_i\leq 10^{10}$ 题解 考虑两两乘积为$x^3$,由于$x^3\le ...
- AtCoder Grand Contest 003 D - Anticube
题目传送门:https://agc003.contest.atcoder.jp/tasks/agc003_d 题目大意: 给定\(n\)个数\(s_i\),要求从中选出尽可能多的数,满足任意两个数之积 ...
- AT2004 Anticube
https://www.zybuluo.com/ysner/note/1304774 题面 给定\(n\)个数\(s_i\),要求从中选出最多的数,满足任意两个数之积都不是完全立方数. \(n\leq ...
- AtCoderAGC003D Anticube
Description: 给定一个序列\(a\),要求选出最多的序列元素并保证两两元素的乘积不为立方数 Solution: 我们考虑哪些因子是有用的,如果一个因子的指数\(>3\),我们可以将他 ...
- Solution -「AGC 003D」「AT 2004」Anticube
\(\mathcal{Description}\) Link. 给定 \(n\) 个数 \(a_i\),要求从中选出最多的数,满足任意两个数之积都不是完全立方数. \(n\le10^5\) ...
- AtCoder Grand Contest 1~10 做题小记
原文链接https://www.cnblogs.com/zhouzhendong/p/AtCoder-Grand-Contest-from-1-to-10.html 考虑到博客内容较多,编辑不方便的情 ...
- Noip前的大抱佛脚----赛前任务
赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noi ...
- AtCoder Grand Contest 003
AtCoder Grand Contest 003 A - Wanna go back home 翻译 告诉你一个人每天向哪个方向走,你可以自定义他每天走的距离,问它能否在最后一天结束之后回到起点. ...
随机推荐
- What...MiniGPT-4居然开源了,提前感受 GPT-4 的图像对话能力!
说在前面的话: 一个月前,OpenAI向外界展示了GPT-4如何通过手绘草图直接生成网站,令当时的观众瞠目结舌. 在GPT-4发布会之后,相信大家对ChatGPT的对话能力已有所了解.圈内的朋友们应该 ...
- 《SQL与数据库基础》18. MySQL管理
目录 MySQL管理 系统数据库 常用工具 mysql mysqladmin mysqlbinlog mysqlshow mysqldump mysqlimport source 本文以 MySQL ...
- KRPano中文教程文档PDF版本下载
KRPano中文教程文档PDF版本下载 下载地址:https://pan.baidu.com/s/1qXIZ2os 感谢KRPano技术解密群小伙伴:斌仔分享 中文文档目录: 概述文件说明krpano ...
- WebAPI接口文档快速编写
近期项目使用了WebAPI,需要先给出接口文档,本着能省事就省事的原则,自然最好是能找到自动生成文档的方式. 一.使用Apifox,官网写着这是个API一体化协作平台,说白了,对于我来说,这就是个测试 ...
- 「luogu - P4126」「ahoi 2009」最小割
link. 也许题不错,反正有点降智- 先给结论,在 \[V_N=V \\ E_N=E \\ c(x,y)=w(x,y) \] 的流网络中: 可行边:在增广完的 induced subgraph 中, ...
- 将Python程序打包成Linux可执行文件
将Python程序打包成Linux可执行文件 安装环境 首先我们要安装pip,命令如下: sudo apt install python3-pip 使用的工具是pyinstaller,打开终端输入su ...
- P6346 [CCO2017] 专业网络 & CF1251E1 Voting(Easy Version)
analysis 这个题目我们可以考虑用贪心来做. 我们不难看出来,这个题目是要让我们推出这么个结论:花小钱,办大人. 整体贪心的思路就出来了,然后就是实现部分. 因为我们认识的人随便是谁都可以.所以 ...
- Spring框架中 依赖注入和控制反转,最简单、最通俗的解释! 再加上一个AOP
首先依赖注入 == 控制反转,只不过控制反转这个词汇,让人产生了错误的理解,才使用新的词汇:依赖注入来替换到这个词汇. "依赖注入"是指一个对象应用另外一个对象来提供一个特殊的能力 ...
- Avalonia 实现视频聊天、远程桌面(源码,支持Windows、Linux、国产OS)
现在最火的.NET跨平台UI框架莫过于Avalonia了.Avalonia 基于.NET Core,因此它可以运行在任何支持.NET Core的平台上.之前基于CPF跨平台UI框架写过一个视频聊天的d ...
- 谈谈selenium4.0中的相对定位
相对定位历史 2021-10-13 发布的 selenium 4.0 开始引入,selenium 3.X是没有的 implement relative locator for find_element ...