AtCoder Grand Contest 003 D - Anticube
题目传送门: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相关推荐
- 【每日亿题#12】AtCoder Grand Contest 021 (A ~ F)全部题解
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 文章目录 AtCoder Grand Contest 021 题解 A. Digit Sum 2 B. ...
- AtCoder Grand Contest 008: Contiguous Repainting(思维)
Contiguous Repainting 时间限制: 2 Sec 内存限制: 256 MB 提交: 69 解决: 22 [提交][状态][讨论版][命题人:admin] 题目描述 There a ...
- AtCoder Grand Contest 017
AtCoder Grand Contest 017 A - Biscuits 有\(n\)个数,问有多少个集合的数的和模\(2\)余\(P\). 随便\(dp\)一下就好了. #include< ...
- AtCoder题解——AtCoder Grand Contest 048——A - atcoder < S
题目相关 题目链接 AtCoder Grand Contest 048 A 题,https://atcoder.jp/contests/agc048/tasks/agc048_a. Problem S ...
- AtCoder题解 —— AtCoder Grand Contest 050 —— B - Three Coins —— 动态规划
题目相关 题目链接 AtCoder Grand Contest 050 B 题,https://atcoder.jp/contests/agc050/tasks/agc050_b. Problem S ...
- Atcoder Grand Contest 010 B - Boxes 差分
B - Boxes 题目连接: http://agc010.contest.atcoder.jp/tasks/agc010_b Description There are N boxes arrang ...
- AtCoder Grand Contest 010 D - Decrementing
题目传送门:https://agc010.contest.atcoder.jp/tasks/agc010_d 题目大意: 有\(n\)个数\(A_i\),它们的\(gcd\)是1,A.B两人轮流操作, ...
- Atcoder Grand Contest 012 B - Splatter Painting解题报告
题目:http://agc012.contest.atcoder.jp/tasks/agc012_b 有一个n点m边的图,(不一定联通) 还有q个操作:每次将一个点v及其周围距离<=d的点涂成颜 ...
- [atcoder]AtCoder Grand Contest 027题解
[题目链接] https://agc027.contest.atcoder.jp/ A [题解] 题意: 是把xxx个糖果分给nnn个人,一个人如果恰好分到aia_{i}ai个糖果就会高兴.求最多使 ...
- UPC个人训练赛第十五场(AtCoder Grand Contest 031)
传送门: [1]:AtCoder [2]:UPC比赛场 [3]:UPC补题场 参考资料 [1]:https://www.cnblogs.com/QLU-ACM/p/11191644.html B.Re ...
最新文章
- 对2014年,关于轻应用的五大预言
- 回顾我走过的编程之路
- 深入理解pts,dts,time_base
- 【算法图解|2】JavaScript 如何实现数组扁平化
- java - 求最大公约数和最小公倍数
- Android之RecyclerView实现时光轴
- 花瓣网方砖布局 图片内容无限加载 用户体验才是王道
- poj1036GangstersDP
- 不显示删除回复显示所有回复显示星级回复显示得分回复 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。...
- PAT之算法/技巧:01背包
- pip下载安装了第三方模块,Pycharm里面无法导入
- 遇到服务器网络偶尔断线如何检查
- 用C语言循环码,xinxilunyubianma
- 利用Cytoscape进行生物相互作用网络可视化及拓扑分析
- dell服务器设置CPU高性能,DellR720服务器提示cpu1 internal error (IERR)
- 中标麒麟mysql 安装_在中标麒麟上安装达梦数据库V8
- 记者:你为什么还不退休? | 任正非:我上午可以喝茶,下午再喝茶就睡不着了...
- windows下上传ipa文件到开发者中心的方法
- php自带加密解密函数
- 基于JAVA-游戏账号交易平台-演示录像-计算机毕业设计源码+系统+mysql数据库+lw文档+部署
热门文章
- 目标客户画像_用户画像(1)用户画像的概念、意义和目标
- 【西窗】2019杭州交通限行规定(最新地图详情)
- 微信小程序数据拼接_微信小程序数据处理
- 3个动作精准引流方法,放大操作,每天吸粉200+
- Word2013的一级标题作为一页的第一行时,出现段前距失效问题如何解决?
- cad计算机绘图实操视频,CAD电脑绘图教程视频
- java有哪些技术领域
- 关于Ubuntu的联网操作
- Sublime text3 Version 3... 3207 激活码许可证(2019-07-19亲测有效)
- python停止运行_Python已停止工作,问题解决