题目传送门:https://agc003.contest.atcoder.jp/tasks/agc003_d

题目大意:

给定\(n\)个数\(s_i\),要求从中选出尽可能多的数,满足任意两个数之积都不是完全立方数


对于每个数\(s_i\),有\(s_i=\prod\limits_{i=1}^mp_i^{k_i}\),则我们令\(a_i=\prod\limits_{i=1}^mp_i^{k_i\%3}\),然后我们用\(a_i\)代替\(s_i\)来进行考虑,

对于每个\(a_i\),满足\(a_i×a_j\)为立方数的\(a_j\)只有一种取值,我们可以贪心地选择出现次数较多的那一种

预处理出\(\sqrt[3]{S}\)内的质数,对于每个\(s_i\)可以在\(O(M+\log s_i)\)的时间内求出\(a_i\)

然后对于考虑每个质因子的次数,可以求出\(a_j\)

(其实这题时限够大,可以预处理质数)

/*program from Wolfycz*/
#include<map>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define Fi first
#define Se second
#define inf 0x7f7f7f7f
#define sqr(x) ((x)*(x))
#define cub(x) ((x)*(x)*(x))
using namespace std;
typedef long long ll;
typedef unsigned int ui;
typedef unsigned long long ull;
inline char gc(){static char buf[1000000],*p1=buf,*p2=buf;return p1==p2&&(p2=(p1=buf)+fread(buf,1,1000000,stdin),p1==p2)?EOF:*p1++;
}
inline int frd(){int x=0,f=1; char ch=gc();for (;ch<'0'||ch>'9';ch=gc())   if (ch=='-')    f=-1;for (;ch>='0'&&ch<='9';ch=gc()) x=(x<<3)+(x<<1)+ch-'0';return x*f;
}
inline int read(){int x=0,f=1; char ch=getchar();for (;ch<'0'||ch>'9';ch=getchar())  if (ch=='-')    f=-1;for (;ch>='0'&&ch<='9';ch=getchar())    x=(x<<3)+(x<<1)+ch-'0';return x*f;
}
inline void print(int x){if (x<0)    putchar('-'),x=-x;if (x>9)    print(x/10);putchar(x%10+'0');
}
const int N=1e5;
ll A[N+10],B[N+10];
map<ll,int>Mp;
int main(){int n=read();for (int i=1;i<=n;i++){ll x,y=1;scanf("%lld",&x);for (ll j=2;cub(j)<=x;j++)  while (x%cub(j)==0) x/=cub(j);map<ll,int>::iterator it=Mp.find(x);if (it==Mp.end())   Mp.insert(map<ll,int>::value_type(x,1));else    it->Se++;A[i]=x;for (ll j=2;cub(j)<=x;j++){if (x%j==0){y*=(x%sqr(j)==0)?j:sqr(j);while (x%j==0)  x/=j;}}y*=(sqr((ll)sqrt(x))==x)?(ll)sqrt(x):sqr(x);B[i]=y;}int Ans=0;map<ll,int>::iterator it=Mp.find(1);if (it!=Mp.end())   Ans++,it->Se=0;for (int i=1;i<=n;i++){int res=0;map<ll,int>::iterator x=Mp.find(A[i]);map<ll,int>::iterator y=Mp.find(B[i]);if (x!=Mp.end())    res=max(res,x->Se),x->Se=0;if (y!=Mp.end())    res=max(res,y->Se),y->Se=0;Ans+=res;}printf("%d\n",Ans);return 0;
}

转载于:https://www.cnblogs.com/Wolfycz/p/10167770.html

AtCoder Grand Contest 003 D - Anticube相关推荐

  1. 【每日亿题#12】AtCoder Grand Contest 021 (A ~ F)全部题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 文章目录 AtCoder Grand Contest 021 题解 A. Digit Sum 2 B. ...

  2. AtCoder Grand Contest 008: Contiguous Repainting(思维)

    Contiguous Repainting 时间限制: 2 Sec  内存限制: 256 MB 提交: 69  解决: 22 [提交][状态][讨论版][命题人:admin] 题目描述 There a ...

  3. AtCoder Grand Contest 017

    AtCoder Grand Contest 017 A - Biscuits 有\(n\)个数,问有多少个集合的数的和模\(2\)余\(P\). 随便\(dp\)一下就好了. #include< ...

  4. AtCoder题解——AtCoder Grand Contest 048——A - atcoder < S

    题目相关 题目链接 AtCoder Grand Contest 048 A 题,https://atcoder.jp/contests/agc048/tasks/agc048_a. Problem S ...

  5. AtCoder题解 —— AtCoder Grand Contest 050 —— B - Three Coins —— 动态规划

    题目相关 题目链接 AtCoder Grand Contest 050 B 题,https://atcoder.jp/contests/agc050/tasks/agc050_b. Problem S ...

  6. Atcoder Grand Contest 010 B - Boxes 差分

    B - Boxes 题目连接: http://agc010.contest.atcoder.jp/tasks/agc010_b Description There are N boxes arrang ...

  7. AtCoder Grand Contest 010 D - Decrementing

    题目传送门:https://agc010.contest.atcoder.jp/tasks/agc010_d 题目大意: 有\(n\)个数\(A_i\),它们的\(gcd\)是1,A.B两人轮流操作, ...

  8. Atcoder Grand Contest 012 B - Splatter Painting解题报告

    题目:http://agc012.contest.atcoder.jp/tasks/agc012_b 有一个n点m边的图,(不一定联通) 还有q个操作:每次将一个点v及其周围距离<=d的点涂成颜 ...

  9. [atcoder]AtCoder Grand Contest 027题解

    [题目链接] https://agc027.contest.atcoder.jp/ A [题解] 题意: 是把xxx个糖果分给nnn个人,一个人如果恰好分到aia_{i}ai​个糖果就会高兴.求最多使 ...

  10. UPC个人训练赛第十五场(AtCoder Grand Contest 031)

    传送门: [1]:AtCoder [2]:UPC比赛场 [3]:UPC补题场 参考资料 [1]:https://www.cnblogs.com/QLU-ACM/p/11191644.html B.Re ...

最新文章

  1. 对2014年,关于轻应用的五大预言
  2. 回顾我走过的编程之路
  3. 深入理解pts,dts,time_base
  4. 【算法图解|2】JavaScript 如何实现数组扁平化
  5. java - 求最大公约数和最小公倍数
  6. Android之RecyclerView实现时光轴
  7. 花瓣网方砖布局 图片内容无限加载 用户体验才是王道
  8. poj1036GangstersDP
  9. 不显示删除回复显示所有回复显示星级回复显示得分回复 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。...
  10. PAT之算法/技巧:01背包
  11. pip下载安装了第三方模块,Pycharm里面无法导入
  12. 遇到服务器网络偶尔断线如何检查
  13. 用C语言循环码,xinxilunyubianma
  14. 利用Cytoscape进行生物相互作用网络可视化及拓扑分析
  15. dell服务器设置CPU高性能,DellR720服务器提示cpu1 internal error (IERR)
  16. 中标麒麟mysql 安装_在中标麒麟上安装达梦数据库V8
  17. 记者:你为什么还不退休? | 任正非:我上午可以喝茶,下午再喝茶就睡不着了...
  18. windows下上传ipa文件到开发者中心的方法
  19. php自带加密解密函数
  20. 基于JAVA-游戏账号交易平台-演示录像-计算机毕业设计源码+系统+mysql数据库+lw文档+部署

热门文章

  1. 目标客户画像_用户画像(1)用户画像的概念、意义和目标
  2. 【西窗】2019杭州交通限行规定(最新地图详情)
  3. 微信小程序数据拼接_微信小程序数据处理
  4. 3个动作精准引流方法,放大操作,每天吸粉200+
  5. Word2013的一级标题作为一页的第一行时,出现段前距失效问题如何解决?
  6. cad计算机绘图实操视频,CAD电脑绘图教程视频
  7. java有哪些技术领域
  8. 关于Ubuntu的联网操作
  9. Sublime text3 Version 3... 3207 激活码许可证(2019-07-19亲测有效)
  10. python停止运行_Python已停止工作,问题解决