AGC003D Anticube

【无标题】EXCEL实现刷题 运用Excel开发的刷题工具,具有普遍实用性,可将WORD的试题自动导入并实现刷题。 阅读详情

传送门

题意:
有一个长度为N的数组S,要求从S中选择一些数,使得在你选择出的这些数中,任意两个数的乘积不是一个立方数。注意:S中的数可能有重复。
求最多能从S中选择多少个数满足要求。

题解:
对每一个数 x = p 1 a 1 p 2 a 2 . . . p k a k x=p_1^{a_1}p_2^{a_2}...p_k^{a_k} x=p1a1​​p2a2​​...pkak​​,我们可以求出 x ′ = p 1 a 1 % 3 p 2 a 2 % 3 . . . p k a k % 3 x'=p_1^{a_1\%3}p_2^{a_2\%3}...p_k^{a_k\%3} x′=p1a1​%3​p2a2​%3​...pkak​%3​,再顺便求出这个数乘以多少会是一个立方数。为陈述方便,就称作 x ′ ′ x'' x′′吧。
可以枚举 x 3 \sqrt[3]{x} 3x ​范围内的质数,然后求出上述值。如果剩下的值>1,有两种情况:它是某个质数的平方;它是一个质数。然后就可以用map存出现次数,最后求答案时加上除立方数外,x’和x’'两种冲突情况的答案的最大值即可。如果有立方数,答案加一。

代码:

#include<cstdio>
#include<map>
#include<algorithm>
#define N 100000
#define LL long long
#define mod 1000000007
using namespace std;
typedef pair<LL,LL> PLL;
typedef map<LL,int>::iterator miter;
int n,p[N+5],pcnt,ans,cnt0;
bool vis[N+5];
map<LL,int> cnt,calc;
map<LL,LL> iv;
void init()
{
	for(int i=2;i<=N;i++)
	{
		if(!vis[i]) p[++pcnt]=i,calc[1ll*i*i]=i;
		for(int j=1;i*p[j]<=N;j++)
		{
			vis[i*p[j]]=true;
			if(i%p[j]==0) break;
		}
	}
}
int main()
{
	scanf("%d",&n);
	init();
	for(int i=1;i<=n;i++)
	{
		LL a,tmp,h1=1,inv=1;
		scanf("%lld",&a); tmp=a;
		for(int j=1;j<=pcnt&&1ll*p[j]*p[j]*p[j]<=a;j++)
			if(tmp%p[j]==0)
			{
				int xcnt=0;
				while(tmp%p[j]==0) tmp/=p[j],xcnt++;
				xcnt%=3;
				for(int i=1;i<=xcnt;i++) h1*=1ll*p[j];
				for(int i=1;i<=(3-xcnt)%3;i++) inv*=1ll*p[j];
			}
		if(tmp>1)
		{ 
			h1*=1ll*tmp;
			miter it=calc.find(h1);
			if(it!=calc.end()) inv*=it->second;
			else inv*=1ll*tmp*tmp;
		}
		if(h1==1) { cnt0=1; continue; }
		cnt[h1]++;
		iv[h1]=inv,iv[inv]=h1;
	}
	for(miter it=cnt.begin();it!=cnt.end();it++)
		if(cnt.find(iv[it->first])==cnt.end()) ans+=it->second;
		else
		{
			ans+=max(it->second,cnt[iv[it->first]]);
			it->second=cnt[iv[it->first]]=0; 
		}
	printf("%d\n",ans+cnt0);
}
【毕业设计】_基于STM32单片机的按摩椅( 原理图+源码) 按摩器系统基于STM32单片机设计,作为核心控制单元。系统配备了OLED显示屏、蓝牙模块、喇叭模块、播报模块和光电感应模块。光电感应器用于检测是否有人接近,同时,系统可以通过蓝牙接收控制指令并执行相应的操作。该系统支持40℃的热敷功能以及气囊按摩功能,具备温度显示功能,并且可以通过按键切换不同的按摩模式。当光电感应器检测到有人时,按摩椅会自动启动。使用DHT11传感器的红色按钮可以调整温度。 阅读详情

相关推荐

达芬奇Pro开发板硬件验证全流程指南

FPGA开发板硬件验证是嵌入式系统可靠性的基石,其核心在于理解SoC启动时序、IO资源映射与高速接口物理层约束。基于Xilinx Zynq-7000异构架构的开发平台,需围绕电源完整性、时钟稳定性、信号完整性及软硬协同启动链路展开分层测试。技术价值体现在规避量产失效率、支撑高可靠工业控制与实时图像处理等场景。典型应用涵盖千兆以太网通信验证、DVP摄像头与RGB LCD显示链路调试、以及SFP+光纤接口PRBS误码率测试。本文聚焦达芬奇Pro系列开发板,深入解析JTAG下载、QSPI Flash重烧录、RGM

weixin_42453228的博客 123

【agc003D】Anticube

Portal --> agc003D Description   给你\(n\)个数,要从里面选出最多的数满足这些选出来的数中任意两个数的乘积都不是立方数    Solution   (为什么感觉最近这种解法比较直接的题反而容易没有思路==)   比较容易想到的是分解质因数(然而。。这题直接分解质因数直接爆炸了==),不然你连判断两个数的乘积是不是立方数都很难搞。。。   那。。假装我们找到...

weixin_30853329的博客 147

深入解析 TDA4VM/VH R5F 核中断机制:VIC 与非 VIC 模式下的实战对比与优化

本文深入解析了TI TDA4VM/VH平台中ARMv7-R架构R5F核的两种中断处理机制:VIC模式与非VIC模式。通过对比硬件自动跳转与软件向量表分发的核心流程、实战代码示例及性能差异,为开发者提供了基于实时性、灵活性与调试需求的选择指南和优化建议,帮助构建更稳定的嵌入式系统。

weixin_29159441的博客 98

质因数分解上的势能分析:AGC003D

对于此类题,很容易分析出就是靠这类类似大大小小的性质类分析,关键点是要先分类讨论,考虑此时行不行,能不能在细分,细分下去是否能区分。二分图点对的性质很明显,但很容易忽略它在接下来分析中的作用。此时剩下最多剩下2个质数,其实分类讨论一下即可。但如何判断剩下的属于。,所以很明显类似根号类的题,进行。题目问是否存在立方,值域范围。考虑回到题目,啥时候有贡献。,这个范围内显然不存在。,所以不可能形成点对。

zhangtingxiqwq的博客 226

戴尔PowerEdge服务器R450 RAID配置步骤

戴尔PowerEdge服务器R450 RAID配置步骤

且听风呤tmj的博客 6911

Python爬虫实战:利用最新技术爬取微信公众号文章(基于搜狗搜索)

使用最新Python版本确保兼容性和性能:比传统Requests更强大的HTML解析库Playwright:新一代浏览器自动化工具,比Selenium更高效Asyncio:异步IO框架提升爬虫效率Redis:分布式任务队列和去重MongoDB:非关系型数据库存储结构化数据本文详细介绍了如何利用Python最新技术栈构建一个功能强大的微信公众号文章爬虫。通过结合Playwright浏览器自动化、异步IO、分布式任务队列等技术,我们实现了一个能够绕过反爬机制、高效稳定抓取数据的解决方案。

2201_76125261的博客 1796

[AGC003D] Anticube

Problem StatementSnuke 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 ...

mekoszc的博客 98

银河麒麟V10等保加固清单:安全基线配置一篇搞定(附逐项检查表)

通过限制使用SSH直接以root身份登录,禁用公钥登录的方式加强SSH服务的安全性。更改SSH默认端口可在一定程度上防止被黑客使用大批量扫描方式攻击。通过修改SSH的配置文件限制可以使用SSH服务远程管理的主机。

信创运维工程师 · 银河麒麟 & 容器实战 | 金融生产环境迁移·等保加固 | 142篇原创·17万+阅读 818

AGC023D - Go Home

AGC023D - Go Home 题目描述 Solution 我们首先把这些人分成在sss左边和在sss右边两类,考虑最左边的一群人AAA和最右边的一群人BBB,这两群人中必然有其中一群人是最后到家的。而是否最后到家取决于这两群人的人数(因为倘若只剩下两群人,一个要往左,一个要往右,必然会往人多的一个方向去)。 设两群人的人数分别为a,ba,ba,b,且a<ba<ba<b。 则...

xmr_pursue_dreams的博客 443

【YOLO26保姆级零踩坑教程】环境搭建+五大任务快速入门,一行代码实现检测/分割/姿态/OBB/分类(Win+Linux全适配)

YOLO26环境搭建与实战指南:零踩坑全适配 本文是YOLO26全栈技术专栏的入门篇,提供Windows/Linux双系统的纯实战环境搭建指南,主打零踩坑、全适配。YOLO26基于Ultralytics框架优化,无需编译源码或手动下载权重,原生支持多任务推理。 环境配置关键点: 必须安装Ultralytics 8.4.0及以上版本 支持CPU/GPU环境,推荐Python 3.8-3.11 提供清华源配置解决下载慢问题 安装步骤: CPU版:一键安装Ultralytics和OpenCV GPU版:匹配CUD

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 774

【问题解决】Python 运行报错 `ModuleNotFoundError` 全网最全解决方案,一文搞定所有导包问题

本文全面解析Python中常见的ModuleNotFoundError和ImportError问题,提供从基础到高级的解决方案。文章首先分析问题原因,包括模块未安装、环境不一致、路径问题等,然后给出7种解决方案:安装缺失模块、检查Python环境、使用虚拟环境、添加搜索路径、相对导入、setup.py安装本地包和使用__init__.py。针对Jupyter Notebook、Docker容器等常见场景提供专门解决方案,并推荐使用requirements.txt、pipenv等预防措施。最后分享调试技巧,帮

博客 917

[AGC003D]Anticube

我连这个都不会做,我还是去死吧;也免得拉低全机房的平均水平。

七代目鸽影 714

【实战项目开发技术分享】如何设置机器人禁行区/虚拟墙

在现代机器人技术的日益发展中,路径规划是使机器人在复杂环境中安全、高效移动的关键部分。其中一个重要的问题是如何划定机器人的禁行区,以确保机器人不会进入危险区域或无法到达的地方。在本文中,我们将探讨一些关键策略,帮助机器人算法工程师更好地划定禁行区。代价地图可以通过多层叠加来实现,一般包括以下几个层级:静态地图层(Static Map Layer):由SLAM(Simultaneous Localization and Mapping)构建的静态地图。该层包含了环境中固定不变的地物信息,如墙壁、家具等。

xiewf的博客 1万+

agc003_d Anticube

https://atcoder.jp/contests/agc003/tasks/agc003_d 这题关键之处是想到3次方对应的3次方是唯一的,也就是说吧一个数质因数分解以后,吧每个因数的幂次都%3然后得到一个新数,那么这个新数只会和另一个确定的新数乘起来是三次幂 然后x^3<=10^20,x<=10^(20/3),那么对于每个数我们只要暴力枚举10^(10/3)内的质数就行了,筛完以后如果还剩,对于10^(10/3)到1e5中的质数,要么是x^2,要么是x,那么只要sqrt一下看是不是平

binarycopycode 216

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

[agc003d]Anticube

前言简单贪心,最难的部分居然是分解质因数。题目大意从一个10^10的数列里选出最多的数,使两两乘积不为立方数。做法把每个数最简表示,即每个质因数的指数都模3。 还要求出这个最简数的补数,也就是满足最简的与其乘积为立方数的数。 对于数列中一个数集团和它的补数集团,贪心的选择较大的那个。 如果一个数和其补数相等,则只能选1个。 重点是求最简数以及补数。 枚举1010310^{\frac{10}

不来也不去的一只失忆蝴蝶 1569

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

AGC003 D Anticube

题意 有n个数,从中选出m个数,使得这m个数两两相乘的乘积都不是立方数 n&amp;amp;lt;=1e5 题解 这种题很大部分都需要质因数分解… 然而质因数分解就T了… 我们暂且不管,考虑一下质因数分解后的做法 我们把所有的指数%3,这样就组合成了一个新数,然后用map把相同的归成一类。 我们先把1特判掉,然后所有的矛盾关系应该都是两两的,我们比较矛盾的两个的大小,取数目较大的那一个加入答案 这样就在O(nlo...

LazyCrazyCat的博客 343

【Atcoder - AGC003D】Anticube

@Anticube@@Problem Statement@@Translation@@Solution@@Code@@End@ @Problem Statement@ Snuke got positive integers s1,…,sN from his mother, as a birthday present. There may be duplicate elements. He wil...

Tiw的博客小家~ 560

AGC003 D Anticube 数论 贪心

题目链接 题意: 给你n个数,求一个最大的集合,使得集合内的数两两相乘都不是完全立方数,输出集合大小。n&amp;amp;lt;=1e5,ai&amp;amp;lt;=1e10n&amp;amp;lt;=1e5,a_i&amp;amp;lt;=1e10n&amp;lt;=1e5,ai​&amp;lt;=1e10 题解: 这种题经常会需要从质因数角度考虑。我们不难想到,如果一个数是完全立方数的话,那么它的每一个质因子的次数应该都是3的倍数。有一个...

forever_shi的博客 350

Agc003_D AntiCube

传送门 题目大意 给定$N$个数,求一个最大的子集,使得任意两两的乘积不是一个完全立方数。 $n\leq 10^5 A_i\leq 10^{10}$ 题解 考虑两两乘积为$x^3$,由于$x^3\leq 10^{20}$,那么$x\leq 10^{\frac{20}{3}}$,那么$x$最多出现一个超过$10^{\frac{10}{3}}$的质因子,且这一质因子不会超过$10^{\...

weixin_30500473的博客 151

Atcoder AGC003D :Anticube(Pollard-Rho)

传送门 题解: 注意到不能同时选的数是一一对应的。 那么直接Pollard-Rho即可。 #include &lt;bits/stdc++.h&gt; #include &lt;tr1/unordered_map&gt; using namespace std; typedef long long LL; typedef __int128 IL; typedef map &lt;LL,...

DZYO的博客 504

AtCoder Grand Contest 003 D - Anticube

#include #define N 100100 using namespace std; typedef long long LL; int prime[2200],len; int n,m,ans; LL l[N],r[N]; map ma; int main(){ for(int i=2;i<2200;i++){ int fla=1; for(int j=2;j<i;j++)

流水的博客 534

Anticube

  5590: Anticube 时间限制: 5 Sec  内存限制: 256 MB 提交: 33  解决: 5 [提交][状态][讨论版][命题人:admin] 题目描述 Snuke got positive integers s1,…,sN from his mother, as a birthday present. There may be duplicate elements. ...

知与谁i的博客 336

AtCoder Grand Contest 003 D - Anticube 贪心

题意 给出n个数a[1..n],要求选出最多的数使得其中任意两个数的乘积不是完全立方数。 n&lt;=100000,a[i]&lt;=10^10 分析 我们把一个数质因数分解后的每个指数都模3,不难发现每一个数都唯一对应一个和它相乘为完全立方数的数,设为其补数。然后在每个数和其补数中选一个较大的加入答案即可。 现在问题在于怎么分解把每个数化简并得到其补数。 不难注意到一个数的立方因...

beginend 524

[agc002f]Leftmost Ball

前言小清新计数题。题意n种颜色每种颜色有k个球(这n种颜色不含白色),排成一行,把每种颜色第一个球涂成白色。 问颜色序列方案数。DP要求任意后缀0的个数不比颜色种类数多。 不妨设dp表示f[i,j]已经用了i种颜色,放了i-j个0。 每次可以在最前面放0。 也可以新加一种颜色,为了不计重最前面的要是这种新颜色。 最后还要乘上颜色的阶乘。#include<cstdio> #include<a

不来也不去的一只失忆蝴蝶 788

【Atcoder】AGC003 C-F简要题解

贪心

远行客 352

Anticube AtCoder - 2004 乱搞

题意:给定序列,要求在序列中找出最多的数,使得其中任意两个数相乘不是立方数。思路:看了大牛的思路,%%%%%%,首先将每个数的因子的指数对三取模,发现同时也求出了当前数与之相乘为完全立方数的最简数,这里称其为补数,这里利用map记录一下补数是否出现,最后取当前数与补数的最大值(乱搞一通,智商-=inf)点击打开链接#include&lt;bits/stdc++.h&gt; #define debu...

qq_41231363的博客 253

【数论】AGC003 Anticube

分析: 有点套路的数学题。 很显然,如果把每个数质因数分解,那么每个质因数的次数对3取模,归为一类,然后对每一类而言,考虑与其矛盾的类,取max即可。 重点就在于如何质因数分解。 很显然,如果要取模,则先保证质数的三次方在101010^{10}1010以内,那么质数的范围就大大缩小,到了[2,3∗103][2,3*10^3][2,3∗103]左右。这个范围内质数的个数就更少了,大约34034034...

氧化钠的博客 192
上一篇: AGC002D Stamp Rally
下一篇: AGC010D Decrementing
dogeding
博客等级 码龄10年 31粉丝 109原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值