cf round480D Perfect Groups
题意:给一个序列,对于每一个连续的区间,区间内的数至少分成几个组,使得每个组内的数任意2个相乘是一个完全平方数(包括0)。 输出每个组数的个数。
$n \leq 5000 , |a_i| \leq 10^8$
我们发现,对于一个数$x$,我们把$x$所有成对的相同质因子除去之后得到的数是$f(x)$
那么分到同一个组的所有数的$f(x_i)$相同,0可以被分到任何集合
明显我们可以$n^2$做这道题,枚举一个子序列的右端点,然后从右到左枚举左端点,顺便维护最小组数。
对于加入一个数$x$,我们需要知道当前区间里面的数是否有和$x$相同的,如果有相同的,就加入那个集合,否则就新开一个集合
所以对于每一个点,我们预处理下一个和它相同的数的位置
当然0的情况不同,随便加到任意一个集合就可以了
//Serene
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<set>
using namespace std;
#define ll long long
#define db double
#define For(i,a,b) for(int i=(a);i<=(b);++i)
#define Rep(i,a,b) for(int i=(a);i>=(b);--i)
const int maxn=5000+7,M=120;
ll n,a[maxn],nxt[maxn],ans[maxn];
set<ll> prime;
set<ll>::iterator it;char cc;ll ff;
template<typename T>void read(T& aa) {aa=0;ff=1; cc=getchar();while(cc!='-'&&(cc<'0'||cc>'9')) cc=getchar();if(cc=='-') ff=-1,cc=getchar();while(cc>='0'&&cc<='9') aa=aa*10+cc-'0',cc=getchar();aa*=ff;
}ll qp(ll x,ll k,ll mod) {ll rs=1;while(k) {if(k&1) rs=rs*x%mod;k>>=1; x=x*x%mod;}return rs;
}ll gcd(ll x,ll y) {return y==0? x:gcd(y,x%y);}bool isprime(ll n) {if(n==2||n==3||n==5||n==7) return 1;if(n<2||(n%6!=1&&n%6!=5)) return 0;ll m=n-1,t=0,x,y;while((m&1)==0) t++,m>>=1;For(qaq,1,20) {x=rand()%(n-2)+2;x=qp(x,m,n);For(i,1,t) {y=x*x%n;if(y==1&&x!=1&&x!=n-1) return 0;x=y;}if(x!=1) return 0;}return 1;
}ll prho(ll n,ll m) {ll x=rand()%(n-1)+1,y=0;for(ll i=1,k=1,d;y!=x;++i) {if(i==k) {y=x;k<<=1;}x=(x*x+m)%n;d=gcd((y-x+n)%n,n);if(d>1&&d<n) return d;}return n;
}void find(ll n,ll m) {if(isprime(n)) {it=prime.find(n);if(it==prime.end()) prime.insert(n);else prime.erase(it);return;}ll p=n; while(p>=n) p=prho(n,m--);find(p,M); find(n/p,M);
}ll get_num(ll n) {
// cerr<<"get_num("<<n<<")\n";if(n==1||n==0) return n;find(n,M);ll rs=1;while(!prime.empty()) {it=prime.begin();rs*=*it;prime.erase(it);}return rs;
}int main() {read(n); ll x;For(i,1,n) {
// cerr<<"get a["<<i<<"]:";read(x);a[i]=get_num(abs(x));if(x<0) a[i]=-a[i];}For(i,1,n) {nxt[i]=n+1;For(j,i+1,n) if(a[j]==a[i]) {nxt[i]=j;break;}}int now;For(i,1,n) {now=0;Rep(j,i,1) {if(a[j]&&nxt[j]>i) ++now;++ans[now];}}ans[1]+=ans[0];For(i,1,n) printf("%lld ",ans[i]);printf("\n");return 0;
}
转载于:https://www.cnblogs.com/Serene-shixinyi/p/9095228.html
cf round480D Perfect Groups相关推荐
- CF980D Perfect Groups
CF980D Perfect Groups 题意: 将一个串划分为多个子集(不要求连续),要求同一子集内两任意元素的积为平方数 定义一个串的答案为所需的最少子集个数 一个长度为 n 的串有 n(n+1 ...
- cf 923C Perfect Security
一 原题 C. Perfect Security time limit per test 3.5 seconds memory limit per test 512 megabytes input s ...
- python的json格式输出_python中json格式数据输出实现方式
python中json格式数据输出实现方式 主要使用json模块,直接导入import json即可. 小例子如下: #coding=UTF-8 import json info={} info[&q ...
- 卷积Groups Group Convolutions
Symmetry Consider a square. Is it symmetric? How is it symmetric? How much symmetry does it have? Wh ...
- heartbeat: ha.cf配置文件中文详解
ha.cf文件设置了heartbeat的检验机制,没有执行机制.Haresources用来设置当主服务器出现问题时heartbeat的执行机制.其内容为:当主服务器宕机后,该怎样进行切换操作.切换内容 ...
- 论文中出现的 cf. i.e. s.t. e.g. w.r.t. et al. etc等英文缩写是什么意思
论文阅读中经常遇到的一些缩写.简拼,具体含义 cf. 参考 例句:The prefix B denotes that the corresponding quantity is expres ...
- Linux--解决上cf慢的问题(通过修改hosts)
2014-12-26 23:23:56 思路:上cf慢由来已久,今看到神博客一篇:http://www.cnblogs.com/Howe-Young/p/4101047.html 完美地解决了这个问题 ...
- cf #796 Div.2
cf #796 Div.2 文章目录 cf #796 Div.2 [A. Cirno's Perfect Bitmasks Classroom](https://codeforces.com/cont ...
- heartbeat: ha.cf配置文件(转载,感谢原创)
ha.cf文件设置了heartbeat的检验机制,没有执行机制.Haresources用来设置当主服务器出现问题时heartbeat的执行机制.其内容为:当主服务器宕机后,该怎样进行切换操作.切换内容 ...
最新文章
- linux apt-get 源,Ubuntu应用之——apt-get更改源地址
- Smarty中的ob_start问题
- 深入理解alias, alias_method和alias_method_chain
- 基于docker 如何部署surging分布式微服务引擎
- 《netty入门与实战》笔记-02:服务端启动流程
- android 小米截图,小米工程师晒基于Android Q定制的MIUI截图
- python怎么查询帮助信息_Python 查看模块的帮助文档,方法和帮助信息
- 打开JMeter报错:Could not reserve enough space for 1048576KB object heap
- 2023北京邮电大学计算机考研信息汇总
- css超链接样式+雪碧图实现导航
- 虚拟机中安装配置Windows server 2003和iis6
- Android初学者的疑惑与“死板”的Android初学之路
- HiveQL整理总结
- day20遍历数组指定输出的数组
- 自然语言处理(NLP)入门(二)
- 你了解PMP考试新考纲的内容吗?
- 创业早期,如何高效“找钱”?
- 业界 | 涂子沛:从幼稚到成熟,我们这个时代的数据革命
- Mac 安装 node.js 并进行配置
- QQ用户信息管理系统
热门文章
- 调起引用市场,引导用户进行评分
- DOM基础、定时器、BOM基础
- 使用ffmpeg来探测GB28181的ps流
- 遇到一个把.o文件strip后出现的奇怪问题
- 【Kafka】Kafka 镜像 Kafka mirroring (MirrorMaker)
- 【linux】为什么 mmap 比系统调用快
- 【elasticsearch】ES 相似文章检测
- 【es】使用ElasticSearch的44条建议 性能优化
- 【SpringCloud】Ribbon 负载均衡
- 【Java】Java 反射 object is not an instance of declaring class