D. Strange Definition

大佬题解

由lcm(x,y)=xygcd(x,y)lcm(x,y)=\frac{xy}{gcd(x,y)}lcm(x,y)=gcd(x,y)xy​可知,如果lcm(x,y)gcd(x,y)=xygcd2(x,y)\frac{lcm(x,y)}{gcd(x,y)}=\frac{xy}{gcd^2(x,y)}gcd(x,y)lcm(x,y)​=gcd2(x,y)xy​是完全平方数,那么xyxyxy是完全平方数。

xyxyxy是完全平方数意味着将其质因数分解后,质因数的次数都是偶数次。不难知道将x,yx,yx,y分别分解质因数后,各自质因数次幂奇偶性相同,也就是如果两个数分解质因数后,质数次幂奇偶性相同,则他们满足题目中的“相邻”条件。

对于0时刻,只需要统计奇偶性相同数的个数即可。
注意:如何记录?借用hash的思想记录,详细看代码
对于1时刻,如果上述其中一个组内元素个数是奇数,那么将他们相乘后得到的数分解质因数仍然是奇数次幂(1除外即此组不代表元素1)
如果组内元素个数是偶数,那么下一时刻相乘后得到的数分解质因数全部都是偶数次幂,它与可以其他组内元素个数是偶数的组或者某组代表的数是1合并。

不难知道其他时刻与1时刻状态相同。

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(1)
#pragma GCC optimize(2)
#pragma GCC optimize(3,"Ofast","inline")
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<map>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const ull P=19260817;
map<ull,int> mp;
void divide(int x)
{ull hash=1;for(int i=2;i<=x/i;i++)if(x%i==0){int cnt=0;while(x%i==0) x/=i,cnt++;if(cnt&1) hash=hash*i;}if(x>1) hash=hash*x;mp[hash]++;
}
int main()
{int T=1;scanf("%d",&T);while(T--){mp.clear();int n;cin>>n;for(int i=1;i<=n;i++){int a;scanf("%d",&a);divide(a);}int res1=0,res2=0;for(auto &t:mp){res1=max(res1,t.second);if(t.second%2==0||t.first==1) res2+=t.second;}res2=max(res2,res1);int q;scanf("%d",&q);while(q--){ll op;scanf("%lld",&op);if(op==0) printf("%d\n",res1);else printf("%d\n",res2);}}return 0;
}

cf好像会卡掉hash,最开始我按照上述博客的方式记录,用base=131或13331都被卡错了,不过博客里面的base=19260817竟然没被卡,神奇!

总结:如果不知道如何记录状态就考虑hash。

菜就多练,要不然训练总挂机
要加油哦~

codeforces1471 D. Strange Definition相关推荐

  1. CF1471 D - Strange Definition(思维,分类讨论,lcm,gcd的性质,数论)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #694 (Div. 2) D 很好的一道数论思维题 D - Str ...

  2. Codeforces Round #694 (Div. 2) D. Strange Definition 质因子分解 + 平方数

    传送门 题意: 定义相邻数为lcm(x,y)gcd(x,y)\frac{lcm(x,y)}{gcd(x,y)}gcd(x,y)lcm(x,y)​是一个平方数,则xxx和yyy是相邻的.现在给出q个询问 ...

  3. Strange Definition CodeForces - 1471D

    题意: 定义数字 x 和 y 是"相邻"的当且仅当 lcm(x,y)/gcd(x,y) 是一个平方数. 给定一个长度为 n 的数组 a. 每过一秒,数组 a 会发生变化:ai 会变 ...

  4. Codeforces Round #694 (Div. 1 + Div2)(A ~ H,8题全,超高质量题解)【每日亿题】2021/2/1、2/2

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 [每日亿题]Codeforces Round #694 (Div. 1 + Div2)(A ~ ...

  5. Codeforces Round #694 Div. 2

    Codeforces Round #694 Div. 2 CodeForces 1471A Strange Partition CodeForces 1471B Strange List CodeFo ...

  6. (6/6) Codeforces Round #694 (Div. 2)

    (6/6) Codeforces Round #694 (Div. 2) A. Strange Partition 题意: 给一个数组,数组中的所有元素可以任意合并,求数组的每个元素除以x上去整的和, ...

  7. Codeforces Round #694 (Div. 1) 部分简要题解

    A - Strange Birthday Party 越大的人应该获得更小价值的礼物. 证明:有两个人,其中,有两个礼物价值分别是,其中.当分别获得礼物,付出的代价是.当分别获得礼物,付出的代价是. ...

  8. 2021.5.11(cf)

    1.cf D.Strange Definition https://codeforces.com/contest/1471/problem/D 大意:定义"相邻",如果两个数x,y ...

  9. 模拟退火 HDU - 2899 Strange Function

    Strange Function [ HDU - 2899 ] 题目大意: 函数 F(x) = 6x7 + 8x6 + 7x3 + 5x2 - yx, 其中x的范围是0 ≤ x ≤ 100. 输入y值 ...

最新文章

  1. 20180917-1每周例行报告
  2. css 动态rem_【面试题】CSS知识点整理(附答案)
  3. Tomcat源码解析系列二:Tomcat总体架构
  4. arm-linux-gcc:Command not found的问题
  5. 【联盛德W806上手笔记】五、TIM定时器
  6. php获取location,php获取header[‘location’]信息常见问题
  7. 开发跨平台app推荐React Native还是flutter?
  8. adb 更新 android sdk,[转载]安装Android时SDK AVD MANAGER时更新报错的解决办法
  9. Hibernate 学习-1
  10. rust异步之async、await、future
  11. HDU-基础搜索总结
  12. MyEclipse配置TomCat环境(图文详解)
  13. php yii 控件分页,Yii实现简单分页的方法
  14. 均值滤波去除图像噪声的matlab程序
  15. 请大家帮忙,帮我看一下.net的这个问题
  16. 《数据挖掘概念与技术》读书笔记
  17. matlab解耦合方程,如何在Matlab中求解耦合随机微分方程
  18. 【移动端网页布局】移动端网页布局基础概念 ① ( 移动端浏览器 | 移动端屏幕分辨率 | 移动端网页调试方法 )
  19. ChatGPT套壳网站汇总-5月22日更新
  20. 22 最近共同先祖(Lowest Common Ancestor of a Binary Tree)

热门文章

  1. r语言用行名称提取数据框信息显示na_学会这些R语言技巧至少可以节省半年时间...
  2. ajax中迭代是什么意思,Ajax 局部刷新迭代器的内容
  3. python让函数抛出异常,是否有任何对象可以使str()函数在python中抛出错误或异常?...
  4. jodconverter水印java,OpenOffice实现Office转Pdf(支持自定义添加水印、页眉、页脚)
  5. linux 往文件写4k大小,[svc]为何linux ext4文件系统目录默认大小是4k?
  6. mysql从库夯住_MySQL从库维护经验分享
  7. linux sudo 必须属于用户ID0,sudo:/usr/bin/sudo 务必属于用户 ID 0(的用户)并且设置 setuid 位...
  8. 如何在MATLAB中把变量填到Word中,matlab数据写入现有excel表格-如何将matlab中变量写入excel...
  9. [JavaWeb-JavaScript]JavaScript_Global全局对象
  10. C++实现链式基数排序